我有一个表单,其中需要在输入元素下方显示验证错误消息.需要通过在错误消息和输入文本周围显示错误气泡来突出显示错误.
为此,我需要检查单个元素的h:消息是否存在.我能够检查是否存在全局错误消息,如下所示
<h:panelGroup rendered="#{not empty facesContext.messages}">
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
我如何检查相同的特定客户端ID(比如名字).所以像
faceContent.messages("creditCardNo")
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案是创建一个自定义解析器,但想知道是否有更好的解决方案.
我创建了一个Facelet组件来扩展h:commandLink(添加一些功能和圆角).
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<span class="btn-left btn-corners"> </span>
<span type="submit" class="submit">
<h:commandLink id="#{id}" value="#{label}" action="#{action}" />
</span>
<span class="btn-right btn-corners"> </span> </ui:composition>
Run Code Online (Sandbox Code Playgroud)
我的新组件可以使用
<my:commandLink id="continue" label="continue" action="#{applyBacking.submit}"/>
Run Code Online (Sandbox Code Playgroud)
而Java代码是
public String submit(){
...
}
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误"ApplyBacking没有提交属性".我理解这个错误的原因是因为在渲染my:commandLink时,它试图将#{applyBacking.submit}评估为属性.相反,我希望将有关调用方法的信息(applyBacking.submit)传递给模板,并在渲染h:commandLink时进行评估.
有什么建议?
我创建了一个JSF复合组件来扩展h:inputBox
<p class="label clear">
<label for="#{cc.attrs.id}" class="">
#{cc.attrs.label}:
</label>
</p>
<p>
<h:inputText id="#{cc.attrs.id}" value="#{cc.attrs.value}"
size="#{cc.attrs.size}" />
<ui:fragment rendered="#{cc.attrs.optional eq 'optional'}">
<span class="optional">Optional</span>
</ui:fragment>
</p>
Run Code Online (Sandbox Code Playgroud)
要使用此组件..
<my:inputText id="firstName" label="First Name" value="#{nameTO.firstName}"/>
Run Code Online (Sandbox Code Playgroud)
在浏览器上呈现此组件时,ID的格式为"firstName:firstName".
<input type="text" value="" name="firstName:firstName" id="firstName:firstName" gtbfieldid="3028">
Run Code Online (Sandbox Code Playgroud)
这是JSF 2.0模板的标准命名约定吗?我没有用JSF 1.2 Facelets模板获得这个.有没有办法生成ID只是"firstName"而不是"firstName:firstName"