单击“提交”按钮,我必须执行应用程序/业务级别验证,并将错误消息关联到链接。我无法做到这一点,有任何方法可以将错误消息放在链接之上。
我对业务逻辑的验证在于操作方法
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
message.setSummary("ERROR MESSAGE");
message.setDetail("ERROR MESSAGE");
FacesContext.getCurrentInstance().addMessage("linkId", message);
非常感谢帮助
答案 0 :(得分:12)
FacesContext#addMessage()
的第一个参数必须是客户端ID,而不是组件ID。客户端ID是您在生成的HTML输出中看到的HTML元素的ID(正如您在浏览器中右键单击页面和查看源所见)。对于表单中的JSF输入和命令组件,这通常以表单的ID为前缀。
因此,对于以下链接,
<h:form id="formId">
...
<h:commandLink id="linkId" ... />
<h:message for="linkId" />
</h:form>
您应该按如下方式添加消息:
FacesContext.getCurrentInstance().addMessage("formId:linkId", message);
但是,正如您在操作方法中所做的那样,显示全局消息的规范方法就是使用<h:messages globalOnly="true" />
,您可以使用null
客户端ID填充消息。
所以,
<h:form id="formId">
...
<h:commandLink id="linkId" ... />
<h:messages globalOnly="true" />
</h:form>
与
FacesContext.getCurrentInstance().addMessage(null, message);
答案 1 :(得分:0)
您可以将错误消息与链接相关联。为此,请为您的按钮编写一个动作方法,如下所示:
<h:commandButton label="Submit" action="#{actionBean.actionMethod}"/>
动作方法如下:
public String actionMethod(){
if(error){
return "error";
else
return "index";
}
该方法返回结果。例如,如果发生错误,页面将导航到/error.xhtml。