IE8 и Primefaces p: selectOneMenu плохо себя ведут при большом количестве p: selectOneMenu в форме

Прежде всего, я хочу извиниться за длинный код, который я публикую, они очень простые, это просто p: selectOneMenu , которые повторяются 17 раз (поэтому и долго). Проблема, с которой я столкнулся, заключается в том, что если у меня слишком много p: selectOneMenu в форме, selectOneMenu не работает и не выпадает, когда пользователь щелкает по нему (если только Я спамил, щелкнув selectOneMenu ) , список не выпадет. Что очень странно, так это то, что если это только 1 или 2 selectOneMenu , тогда он работает нормально (вот почему я публикую код, который отображает раскрывающийся список 17). Это происходит только в IE8. Это нормально работает IE6,7 FF, Chrome.

Еще раз: извиняюсь за длинный код

РЕДАКТИРОВАТЬ1: Я просто редактирую свой код, чтобы добавить больше записей в foodList моего управляемого bean-компонента. Это очень важно для того, чтобы воспроизвести мои проблемы

<div id="MainWrapper">
    <h:form id="myForm" styleClass="mainForm">
        <h:panelGrid columns="2" columnClasses="columnStyle,columnStyle">
            <h:panelGrid columns="3">
                Select Food1:
                <p:selectOneMenu id="food1" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood1"/>
                </p:selectOneMenu>
                <p:message id="errorFood1" for="food1"/>

                Select Food2:
                <p:selectOneMenu id="food2" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood2"/>
                </p:selectOneMenu>
                <p:message id="errorFood" for="food2"/>

                Select Food3:
                <p:selectOneMenu id="food3" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood3"/>
                </p:selectOneMenu>
                <p:message id="errorFood3" for="food3"/>

                Select Food4:
                <p:selectOneMenu id="food4" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood4"/>
                </p:selectOneMenu>
                <p:message id="errorFood4" for="food4"/>

                Select Food5:
                <p:selectOneMenu id="food5" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood5"/>
                </p:selectOneMenu>
                <p:message id="errorFood5" for="food5"/>

                Select Food6:
                <p:selectOneMenu id="food6" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood6"/>
                </p:selectOneMenu>
                <p:message id="errorFood6" for="food6"/>

                Select Food7:
                <p:selectOneMenu id="food7" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood7"/>
                </p:selectOneMenu>
                <p:message id="errorFood7" for="food7"/>

                Select Food8:
                <p:selectOneMenu id="food8" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood8"/>
                </p:selectOneMenu>
                <p:message id="errorFood8" for="food8"/>

                Select Food9:
                <p:selectOneMenu id="food9" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood9"/>
                </p:selectOneMenu>
                <p:message id="errorFood9" for="food9"/>

                Select Food10:
                <p:selectOneMenu id="food10" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood10"/>
                </p:selectOneMenu>
                <p:message id="errorFood10" for="food10"/>

                Select Food11:
                <p:selectOneMenu id="food11" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood11"/>
                </p:selectOneMenu>
                <p:message id="errorFood11" for="food11"/>

                Select Food12:
                <p:selectOneMenu id="food12" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood12"/>
                </p:selectOneMenu>
                <p:message id="errorFood12" for="food12"/>

                Select Food13:
                <p:selectOneMenu id="food13" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood13"/>
                </p:selectOneMenu>
                <p:message id="errorFood13" for="food13"/>

                Select Food14:
                <p:selectOneMenu id="food14" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood14"/>
                </p:selectOneMenu>
                <p:message id="errorFood14" for="food14"/>

                Select Food15:
                <p:selectOneMenu id="food15" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood15"/>
                </p:selectOneMenu>
                <p:message id="errorFood15" for="food15"/>

                Select Food16:
                <p:selectOneMenu id="food16" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood16"/>
                </p:selectOneMenu>
                <p:message id="errorFood16" for="food16"/>

                Select Food17:
                <p:selectOneMenu id="food17" required="true" value="#{viewBean.selectedFood}"
                                    styleClass="dropdown-width">
                    <f:selectItem itemLabel="Select One" itemValue=""/>
                    <f:selectItems value="#{viewBean.foodList}"/>
                    <p:ajax update=":myForm:errorFood17"/>
                </p:selectOneMenu>
                <p:message id="errorFood17" for="food17"/>
            </h:panelGrid>
            There is supposed to be another table here
        </h:panelGrid>
        <p:commandButton value="submit" update="myForm"/>
    </h:form>
</div>

Управляемый компонент

@ManagedBean
@ViewScoped
public class ViewBean implements Serializable {

    private List<String> foodList;
    private String selectedFood;

    public ViewBean() {
    }

    @PostConstruct
    public void init() {

        foodList = new ArrayList<String>();
        foodList.add("Pizza");
        foodList.add("Pasta");
        foodList.add("Hamburger");
        foodList.add("Hot Dog");
        foodList.add("Spring Roll");
        foodList.add("Grill Fish");
        foodList.add("Chips");
        foodList.add("Ramen");
    }
    //setter, getter
}

Вот мой CSS.

body{
    background-color: #EBEAE3;
    font-family: Trebuchet;
    margin: 0;
}

#MainWrapper{
    margin: 0 auto;
    width: 1100px;
    background-color: white;
}

.columnStyle{
    vertical-align: top;
}

.mainForm{
    margin-left: 68px;
}

.dropdown-width{
    width: 400px;
}

.ui-widget {
    font-family: Arial,sans-serif;
    font-size: 0.8em;
}

td .ui-selectonemenu {
    display:block;
}

Я потратил много времени на отладку этого, но тот факт, что он выдает ошибку при большом количестве selectOneMenu и отлично работает при 1 или 2 selectOneMenu , просто ломает мне голову из. Вот мой доктайп

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
задан Thang Pham 16 January 2012 в 21:50
поделиться