作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试仅显示两个必填字段之一。目前,如果两个字段都为空,则会出现两条错误消息。我希望实现的是,如果两个字段或只有一个字段为空,则只有一条消息。
代码如下所示:
<x:inputText
value="#{bean.proxyUrl}"
id="idProxyUrl"
required="true"
/>
<x:outputText value=":" />
<x:inputText
value="#{bean.proxyPort}"
id="idProxyPort"
required="true"
/>
<x:message for="idProxyUrl" errorClass="errorMessage" style="margin-left: 10px;" />
<x:message for="idProxyPort" errorClass="errorMessage" style="margin-left: 10px;" />
我该怎么办,无论一个或两个字段为空,我都只会收到一条消息。
最佳答案
您可以为第二个组件指定一个特殊的 validator 来检查第一个组件的 SubmittedValue。我对 PasswordValidator 做了类似的事情,检查了相应的确认密码字段。
@FacesValidator("passwordValidator")
public class PasswordValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
String password = (String) value;
UIInput confirmComponent = (UIInput) component.getAttributes().get("confirm");
String confirm = (String) confirmComponent.getSubmittedValue();
if (password == null || password.isEmpty() || confirm == null || confirm.isEmpty()) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Please confirm password", null);
throw new ValidatorException(msg);
}
if (!password.equals(confirm)) {
confirmComponent.setValid(false);
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "The entered passwords do not match", null);
throw new ValidatorException(msg);
}
}
您必须检查其他组件的提交值的原因是因为 validator 是在生命周期的“流程验证”阶段调用的。在此阶段完成并且每个提交的值都通过验证之前,不会应用任何提交的值。
关于java - JSF 针对两个必填输入字段发出一条错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12640705/
在使用网站、加载内容等一段时间后,此消息显示“Fill:SelectCommand.Connection 属性尚未初始化”!我认为这是因为 sql 连接,但不确定......我想知道我能做些什么来防止
我是一名优秀的程序员,十分优秀!