Компонент формы должен иметь UIForm в своей родословной. Предложение: заключить необходимые компоненты в <h: form>
Я получаю следующую ошибку на моей странице Facelet, которая просто состоит из формы IceFaces с двумя полями и двумя кнопками:
Компонент формы должен иметь UIForm в своей родословной. Предложение: заключить необходимые компоненты в < h: form >
Вот форма:
<ice:form id="form1" partialSubmit="false">
<ice:panelLayout id="panelLayout3">
<ice:graphicImage id="graphicImage1" url="/resources/images/LoginImage.jpg" width="560" />
<ice:outputLabel for="j_username" id="outputLabel1" value="Username:"/>
<ice:outputLabel for="j_password" id="outputLabel2" value="Password:"/>
<ice:inputText binding="#{login.username}" id="j_username" required="true" />
<ice:inputSecret binding="#{login.password}" id="j_password" required="true" />
<ice:commandButton actionListener="#{login.login}" id="loginBtn" value="Login"/>
<ice:commandButton action="#{login.reset}" id="resetBtn" value="Reset"/>
<ice:outputText id="errorMessage" />
<ice:message errorClass="errorMessage" for="j_username" fatalClass="fatalMessage" id="messages1" infoClass="infoMessage" showSummary="false" warnClass="warnMessage"/>
</ice:panelLayout>
</ice:form>
Как это вызвано и как я могу его решить?
Ответы
Ответ 1
Это не ошибка. Это предупреждение. Код выглядит хорошо, все входные компоненты находятся внутри формы, кажется, что он должен работать и работать нормально. Если он действительно работает нормально, просто игнорируйте предупреждение. Это предупреждение отображается только тогда, когда параметр контекста javax.faces.PROJECT_STAGE
установлен в Development
.
Что касается самого ложного предупреждения, эта проверка была введена в Mojarra 2.1.1 в соответствии с выпуском 1663. Тем не менее, согласно вопросу 2147, у него есть некоторые ошибки, и в Mojarra 2.1.3 он был улучшен. Я бы предположил, что ложное предупреждение в вашем конкретном случае связано с наличием <ice:panelLayout>
между формой и элементами ввода.
Если вы еще не на Mojarra 2.1.3, вы можете рассмотреть возможность обновления, чтобы увидеть, удаляет ли это ложное предупреждение.