您好我正在做一些非常简单的事情,但它不起作用我正在使用jboss和jsf 2.0。 所以我正在尝试根据下拉菜单用户的选择创建一个显示某些字段的表单,以便我使用selectOneMenu
<h:panelGrid columns="2" id="formTaxon">
<h:outputLabel value="Nombre Científico Taxón" for="taxonInput" />
<p:inputText value="#{taxonDM.taxon.nombreCientificoTaxon}"
id="taxonInput" />
<h:outputLabel value="Nombre Común" for="nombreComunInput" />
<p:inputText value="#{taxonDM.taxon.nombreComunTaxon}"
id="nombreComunInput" />
<h:outputLabel value="Tipo" for="tipoTaxon" />
<p:selectOneMenu id="tipoTaxon" value="#{taxonDM.taxon.tipoTaxon}"
name="tipoTaxon">
<f:selectItem itemLabel="Seleccione uno" itemValue="" />
<f:selectItems value="#{tipoTaxonDM.tiposTaxones}" var="txn"
itemValue="#{txn.idTipoTaxon}" itemLabel="#{txn.nombreTipo}" />
<f:ajax process="@this"
listener="#{taxonController.tipoTaxonesXX}" render="formTaxon" />
</p:selectOneMenu>
<p:inputText id="test" val="" />
</h:panelGrid>
我首先尝试没有听众
但没有任何作用,我在服务器上没有出现任何错误当我用firebug检查脚本时出现错误
<?xml version='1.0' encoding='UTF-8'?>
<partial-response><error><error-name>class java.lang.IllegalStateException</error-name><error-message><![CDATA[Parameters processing failed.]]></error-message></error></partial-response>
我使用firefox在jboss 7.0.2和7.1.1上进行了测试。我看到IE和jboss 7.1.1之间存在一个与此相关的错误,但我想情况并非如此。
我也试过用h:selectOneMenu而不是p:selectOneMenu。没有变化。
答案 0 :(得分:1)
当项目值为taxon.tipoTaxon
时,您将{0}}中的下拉框的值绑定为<p:selectOneMenu id="tipoTaxon" value="#{taxonDM.taxon.tipoTaxon}">
。
据我们所知,前者的类型为idTipoTaxon
,后者的类型为TipoTaxon
,最有可能。因此,当JSF尝试在这些类型之间进行转换时,它会失败。
您需要提供Converter
以便JSF知道如何将提交的字符串转换为模型对象(您可以在此处找到许多示例,在Stack Overflow上),或将下拉值绑定为整数很像Integer
。