Составной компонент JSF, несколько полей значений - PullRequest
0 голосов
/ 07 декабря 2018

Возможно ли иметь несколько значений для составного компонента.Вот пример того, что я хочу сделать:

<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);

У меня большая часть этой работы, но я не могу понять, как установить значение city в компоненте поддержки из lookupZipметод.Значение города всегда равно нулю.Это возможно?

...