Возможно ли иметь несколько значений для составного компонента.Вот пример того, что я хочу сделать:
<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метод.Значение города всегда равно нулю.Это возможно?