検索フィールドに入力するすべてのデータがnull値でJavaコードに渡されるため、検索フォームに少し問題があります。jsf2は初めてです。
これは私のxhtmlページで、次の形式です。
<h:form>
<ul>
<li>
<h:outputLabel for="equipmentName" value="#{bundle.NomeEquipamento_Title}"/>
<h:inputText value="#{materialController.selected.equipmentName}" class="w_130" id="equipmentName" required="false" validatorMessage="#{bundle.NomeEquipamento_Title} inválido."/>
</li>
<li>
<h:outputLabel for="channelCode" value="#{bundle.CodigoCanal_Title}"/>
<h:inputText value="#{materialController.selected.channelCode}" class="w_80" id="channelCode" required="false" validatorMessage="#{bundle.CodigoCanal_Title} inválido."/>
</li>
<li><h:commandButton type="reset" class="bt_limpar button29" style="margin-top:13px;"><span class="screen_reader_text">Limpar</span></h:commandButton></li>
<li><h:commandLink action="#{materialController.pesquisa}" class="bt_pesquisar button29" style="margin-top:13px;" immediate="true"><span class="screen_reader_text">Pesquisar</span></h:commandLink></li>
</ul>
</h:form>
これは、「equipmentName」と「channelCode」の2つの属性を持つ私のDTOです。
public class SearchCommercialsDTO implements Serializable{
private String equipmentName;
private Integer channelCode;
/**
* Default constructor
*/
public SearchCommercialsDTO() {}
/**
* Constructor
* @param equipmentName
* @param channelCode
*/
public SearchCommercialsDTO(String equipmentName, Integer channelCode) {
this.equipmentName = equipmentName;
this.channelCode = channelCode;
}
public String getEquipmentName() {
return equipmentName;
}
public void setEquipmentName(String equipmentName) {
this.equipmentName = equipmentName;
}
public Integer getChannelCode() {
return channelCode;
}
public void setChannelCode(Integer channelCode) {
this.channelCode = channelCode;
}
}
そしてこれは私のmanadgedbeanです:
@ManagedBean(name = "materialController")
@SessionScoped
public class MaterialController implements Serializable {
private SearchCommercialsDTO current;
private int selectedItemIndex;
public MaterialController() {
}
public SearchCommercialsDTO getSelected() {
if (current == null) {
current = new SearchCommercialsDTO();
selectedItemIndex = -1;
}
return current;
}
public String pesquisa() {
try{
getFacade().find(current);
JsfHelper.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("PesquisaRealizada"));
return preparaPesquisa();
} catch (Exception e) {
JsfHelper.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
}
「Pesquisar」ボタンをクリックすると投稿が行われますが、「SearchCommercialsDTO」属性「current」は、入力テキストフィールドに何かを入力しても、すべての属性値「null」で渡されます。
私のコードには何が欠けていますか?
ありがとう!