小编use*_*809的帖子

JSF:检查<h:message for ="id"/>是否存在的更好方法

我有一个表单,其中需要在输入元素下方显示验证错误消息.需要通过在错误消息和输入文本周围显示错误气泡来突出显示错误.

为此,我需要检查单个元素的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)

我目前的解决方案是创建一个自定义解析器,但想知道是否有更好的解决方案.

jsf jsf-2

20
推荐指数
1
解决办法
2万
查看次数

扩展JSF commandLink组件

我创建了一个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">&#160;</span>
    <span type="submit" class="submit">
        <h:commandLink id="#{id}" value="#{label}" action="#{action}" />
    </span>
    <span class="btn-right btn-corners">&#160;</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 jsf-2

5
推荐指数
1
解决办法
3448
查看次数

JSF复合组件ID

我创建了一个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"

jsf jsf-2

5
推荐指数
1
解决办法
8748
查看次数

标签 统计

jsf ×3

jsf-2 ×3