Я учился с JSF даже для слабого, поэтому я очень новичок в этом. Я уже нашел одну «проблему» ... ну, на самом деле это не большая проблема, но еще более косметическая проблема.Исходный JavaScript для ввода форм в JSF
Я создал базовую форму, чтобы зарегистрировать пользователей с некоторыми тегами проверки (см. Код выше). Все работает отлично, но я также хотел бы использовать контроль на стороне клиента через JavaScript. Я уже обнаружил, что могу написать свою собственную функцию проверки JavaScript - но это не то, что я хотел бы иметь. Я уже определил правила валидации в тегах проверки, поэтому я считаю, что глупо писать код вручную, когда такая хорошая структура, как JSF, может делать большую часть этих вещей автоматически. Я также узнал, что Sun намеренно удалило автоопределение JavaScript с JSF.
Итак, мой вопрос: есть ли способ сделать JSF генерировать функции JavaScript (с f: проверять информацию), используя их автоматически на форме submit? Кроме того, я использую PrimeFaces, можно ли добиться этого с помощью PrimeFaces?
Вот код формы я сделал:
<h:form>
<table>
<tr>
<th><label for="registration-email">#{usersTexts.email}:</label></th>
<td>
<h:inputText value="#{userRegistry.newUser.email}" id="registration-email" validatorMessage="#{msg.invalidEmail}" maxlength="100">
<f:validateRegex pattern="^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$" />
</h:inputText>
</td>
</tr>
<tr>
<th><label for="registration-name">#{usersTexts.name}:</label></th>
<td>
<h:inputText value="#{userRegistry.newUser.name}" id="registration-name" validatorMessage="#{formsTexts.field} #{usersTexts.name} #{msg.isEmpty}" maxlength="100">
<f:validateRequired />
</h:inputText>
</td>
</tr>
<tr>
<th><label for="registration-password1">#{usersTexts.password}:</label></th>
<td>
<h:inputSecret value="#{userRegistry.newUser.password}" binding="#{password}" id="registration-password1" validatorMessage="#{formsTexts.field} #{usersTexts.password} #{msg.isEmpty}">
<f:validateRequired />
</h:inputSecret>
</td>
</tr>
<tr>
<th><label for="registration-password2">#{usersTexts.passwordAgain}:</label></th>
<td>
<h:inputSecret id="registration-password2" validatorMessage="#{msg.passwordsNotEqual}">
<f:validateLength minimum="#{user.MIN_PASSWORD_LENGTH}" />
<f:validator validatorId="equality" />
<f:attribute name="matchAgainst" value="#{password}" />
</h:inputSecret>
</td>
</tr>
<tr>
<td colspan="2">
<p:captcha immediate="true" validatorMessage="#{msg.wrongCaptcha}" requiredMessage="#{formsTexts.captcha} #{msg.isEmpty}" />
</td>
</tr>
<tr>
<td colspan="2" class="submit_row"><h:commandButton value="#{usersTexts.register}" action="#{userRegistry.register}" /></td>
</tr>
</table>
</h:form>
Это на самом деле не работает ... на отправке Я получаю эту ошибку: malformedXML: Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE), а при размытии ничего не происходит. – James
Вы используете '' вместо '' в шаблоне? '' позволяет JSF (и библиотекам компонентов) автоматически включать необходимые файлы CSS/JS. –
BalusC
Да, я знаю. На самом деле это было только в шаблоне, а не на конкретной странице, но это не проблема ... попытался добавить туда тоже, и проблема остается. –
James