さて、私はデータテーブルを持っています。その上で、ユーザーはデータテーブルに表示される値を入力します。これで、このコードをバッキング Bean に記述しました。
if (countryList.contains(country)) {
FacesMessage msg = new FacesMessage("Duplicated", "This country has already been added");
FacesContext.getCurrentInstance().addMessage(null, msg);
} else{
countryList.add(country);
this.country = new Country();
}
データテーブルと入力フィールド xhtml は
<p:outputPanel>
<h:panelGrid columns="3" cellpadding="5" cellspacing="5">
<p:column>
<h:outputLabel for="country" value="Country: "></h:outputLabel>
</p:column>
<p:column>
<p:inputText id="country" maxlength="25" value="#{profileInfoManagedBean.country.country}" required="false" label="Country">
<p:watermark value="Enter a country name" for="country" />
<p:ajax event="blur" update="msg1" />
</p:inputText>
</p:column>
<p:column>
<p:message id="msg1" for="country" display="icon"></p:message>
</p:column>
</h:panelGrid>
<p:commandButton value="Add" action="#{profileInfoManagedBean.addCountry}" update=":mainForm" style="margin:10px 0" id="btnAdd"/>
</p:outputPanel>
さて、問題は、初めて国を追加するときに、国名の重複が検出されないことです。JSF 2.0 を使用しています。