選択リスト付きのフォーム:
<p:inputText id="number" value="#{accountNumberBean.account.accountNumber}" required="true" label="#{msg['newAccountNumberForm.number']}">
<f:validateLength maximum="50" for="name" />
</p:inputText>
<p:message for="number" display="text" />
<p:pickList id="integrations" value="#{accountNumberBean.integrations}" var="integration" itemLabel="#{integration.name} (#{integration.backend.name})" itemValue="#{integration}" converter="integrationConverter">
<f:facet name="sourceCaption">#{msg['newAccountNumberForm.integrations.available']}/>
<f:facet name="targetCaption">#{msg['newAccountNumberForm.integrations.used']}/>
</p:pickList>
<p:commandButton value="#{msg['button.createAndNext']}" action="#{accountNumberBean.addNewAndStay}" update="@form" />
入力した数字を入力しない場合は、コマンドボタンをクリックします。検証メッセージが表示されますが、選択リストのオブジェクトのラベルが更新され、空の角かっこのみになります。
itemLabel="#{integration.name} (#{integration.backend.name})"
それらを選択して名前を入力すると、すべて問題ありません(最初に名前を入力したかのように機能します)。したがって、問題はラベルだけです。これは私のコンバーターです:
@FacesConverter(forClass = Integration.class, value = "integrationConverter")
public class IntegrationConverter implements Converter {
/**
* {@inheritDoc}
*/
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Integration integration = new Integration();
integration.setId(Long.parseLong(value));
return integration;
}
/**
* {@inheritDoc}
*/
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return ((Integration) value).getId().toString();
}
}
そして、統合を取得するためのBeanのメソッド(Beanはビュースコープ):
public DualListModel<Integration> getIntegrations() {
integrations.setSource(customerService.getIntegrations(customer));
return integrations;
}
ラベルが空になる原因は何ですか?