String 将多个输出和输入组件的值合并

String 将多个输出和输入组件的值合并,string,jsf,append,concat,String,Jsf,Append,Concat,我有2个outputText字段,1个必填字段和1个可选字段。如何合并或附加所有值并将其设置为单个模型属性 <h:outputText value="AT-" /> <h:outputText value="#{yearOfDate}"/> <p:inputMask value="#{requiredRefNo}" required="true" mask="9999"/> <p:inputMask value="#{optionalRefNo}" ma

我有2个outputText字段,1个必填字段和1个可选字段。如何合并或附加所有值并将其设置为单个模型属性

<h:outputText value="AT-" />
<h:outputText value="#{yearOfDate}"/>
<p:inputMask value="#{requiredRefNo}" required="true" mask="9999"/>
<p:inputMask value="#{optionalRefNo}" mask="aa"/>


例如,在给定的示例中,我有一个字符串AT-2012-6060-VI。如何附加所有值并将其设置为单个模型属性?

对于您来说,可能最容易为此创建一个备份组件,该组件扩展并返回所需的格式

<h:outputText value="AT-" />
<h:outputText value="#{yearOfDate}"/>
<p:inputMask value="#{requiredRefNo}" required="true" mask="9999"/>
<p:inputMask value="#{optionalRefNo}" mask="aa"/>
以下是一个最简单的启动示例:

/resources/components/refNo.xhtml


在-#{cc.year}--
com.example.RefNoComposite

@FacesComponent("refNoComposite")
public class RefNoComposite extends UIInput implements NamingContainer {

    public RefNoComposite() {
        getStateHelper().put("year", new SimpleDateFormat("yyyy").format(new Date()));
    }

    @Override
    public String getFamily() {
        return UINamingContainer.COMPONENT_FAMILY;
    }

    @Override
    public Object getSubmittedValue() {
        return new StringBuilder()
            .append("AT")
            .append('-')
            .append(getYear())
            .append('-')
            .append(((UIInput) findComponent("ref1")).getSubmittedValue())
            .append('-')
            .append(((UIInput) findComponent("ref2")).getSubmittedValue())
            .toString();
    }

    public String getYear() {
        return (String) getStateHelper().eval("year");
    }

}
随机Facelets页面中的使用示例:

xmlns:cc=”http://java.sun.com/jsf/composite/components"
...

注意:如果您还想验证该值,那么您需要覆盖backing组件中的方法。顺便说一句,第二个参数正是
getSubmittedValue()

对于您来说,可能最容易为此创建一个支持组件,该组件扩展并返回所需的格式

以下是一个最简单的启动示例:

/resources/components/refNo.xhtml


在-#{cc.year}--
com.example.RefNoComposite

@FacesComponent("refNoComposite")
public class RefNoComposite extends UIInput implements NamingContainer {

    public RefNoComposite() {
        getStateHelper().put("year", new SimpleDateFormat("yyyy").format(new Date()));
    }

    @Override
    public String getFamily() {
        return UINamingContainer.COMPONENT_FAMILY;
    }

    @Override
    public Object getSubmittedValue() {
        return new StringBuilder()
            .append("AT")
            .append('-')
            .append(getYear())
            .append('-')
            .append(((UIInput) findComponent("ref1")).getSubmittedValue())
            .append('-')
            .append(((UIInput) findComponent("ref2")).getSubmittedValue())
            .toString();
    }

    public String getYear() {
        return (String) getStateHelper().eval("year");
    }

}
随机Facelets页面中的使用示例:

xmlns:cc=”http://java.sun.com/jsf/composite/components"
...
注意:如果您还想验证该值,那么您需要覆盖backing组件中的方法。第二个参数正好是
getSubmittedValue()