作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 xhtml 页面代码:
<h:outputLabel value="Email address: " />
<h:inputText id="email" value="#{userBean.emailAddressBeingEdited}" required="true" requiredMessage="*" />
<h:message for="email" id="emailM"/>
FacesContext.getCurrentInstance().addMessage("email", new FacesMessage("Email already in use"));
最佳答案
您在 addMessage()
中指定的客户端 ID必须是真正的客户端 ID,而不是组件 ID。输入组件的客户端 ID 通常以父表单组件的 ID 为前缀。对于尚未记住哪些 JSF 组件实现的初学者 NamingContainer
以及如何生成客户端ID,找出真实客户端ID的最简单方法是在浏览器中打开页面,查看其源代码并找到生成的HTML <input type="text">
元素,最后取其 id
.如果您给了 <h:form>
formId
的ID ,它将是 formId:email
.这是您需要在 addMessage()
中指定的真实客户端 ID .
context.addMessage("formId:email", message);
Development
,然后 JSF 会自动将其附加到正文末尾的“未处理消息”列表中。这就是你所看到的。查看生成的HTML源码自己看,是自动生成的HTML列表
<ul id="javax_faces_developmentstage_messages">
.
Validator
为了这。这样您就无需担心客户端 ID。你只需要抛出一个
ValidatorException
与
FacesMessage
.例如。
@FacesValidator("uniqueEmailValidator")
public class UniqueEmailValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
// ...
if (emailIsAlreadyInUse) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Email is already in use", null));
}
}
}
<f:validator validatorId="uniqueEmailValidator" />
输入组件内部。
关于jsf - 我如何定位 h :message to the right of a h:inputText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565567/
我是一名优秀的程序员,十分优秀!