JSF复合组件,多个值字段

时间:2018-12-07 14:04:25

标签: jsf composite-component

复合组件是否可以具有多个值。这是我想做的事的例子:

<foo:zipcode id="zipcode" value="#{bean.zipcode}" city="#{bean.city}" >
    <f:ajax eventt="changeEvent" update="city">
</foo:zipcode>
<h:inputText id="city" value="#{bean.city} />

其中复合组件具有邮政编码的输入。输入后,我会查询/验证邮政编码并更新城市。

复合组件看起来像:

<cc:interface componentType="component.zipCode">
    <cc:attribute name="value" required="true" />
    <cc:attribute name="city" />
</cc:interface>
<cc:implementation>
    <p:inputText id="zipCode" value="#{cc.attrs.value}" >
        <p:ajax partialSubmit="true" process="@this" update="@this" listener="#{cc.lookupZip}"/>
    </p:inputText>
</cc:implementation>

然后是我拥有的后援组件:

@FacesComponent(value = "component.zipCode")
public class UIZipCode extends UIInput implements NamingContainer {
    public void lookupZip(AjaxBehaviorEvent event) {
        // Code to lookup zipcode and get city.
        // What goes HERE to update the city passed as attribute?
    }
}

我缺少明显的东西吗?我已经浏览了大量BalusC的帖子,并尝试过类似的操作:

ValueExpression city = (ValueExpression) getAttributes().get("city");                
city.setValue(FacesContext.getCurrentInstance().getELContext(), cityString);

我已经完成了大部分工作,但是无法通过lookupZip方法弄清楚如何在backing bean中设置city的值。城市的价值永远是  空值。这可能吗?

0 个答案:

没有答案