【发布时间】:2014-05-13 05:47:19
【问题描述】:
我有一个 JSF 复合组件,其中包含一个作为根的 h:form。该表单有许多组件,其中包括 selectOneMenu 和 h:inputFile。当我在表单上设置 enctype="multipart/form-data" 时,仅针对两个值更改事件调用 selectOneMenu 的 valuechangelistener。后来,无论我与菜单交互,值更改侦听器根本没有被调用。但是,如果我删除 enctype="multipart/form-data" 一切正常。我必须保留 enctype="multipart/form-data" 因为我有一个文件上传组件。
这是我的 Bean:
@Model
@ViewScoped
public class TransactionBean implements Serializable {
private Part inReceiptFilePart;
/*setter and getter*/
private TransactionType transactionType;
/*setter and getter*/
private final TransactionType transTypeList[] = {
TransactionType.COMPLETE,TransactionType.TECHNICAL,TransactionType.SUBMUNICIPALITY_TECHNICAL, TransactionType.COMPLAINT, TransactionType.FOLLOWUP_COUNCIL, TransactionType.FOLLOWUP_MANAGEMENT
};
public TransactionType[] getTransTypeList() {
return transTypeList;
}
public void transactionTypeChanged(ValueChangeEvent event) {
... /// some code
}
}
这里是 JSF 复合组件:
<h:form id="entryForm" enctype="multipart/form-data">
<p:selectOneMenu id="transType" value="#{transactionBean.transactionType}" style="direction: ltr" valueChangeListener="#{transactionBean.transactionTypeChanged}">
<f:ajax execute="transType" render="@form" > </f:ajax>
<f:selectItems value="#{transactionBean.transTypeList}" var="tt" itemLabel="#{tt.arName}">
</f:selectItems>
</p:selectOneMenu>
<h:inputFile value="#{transactionBean.inReceiptFilePart}" > </h:inputFile>
<p:commandButton id="insertTrans" value="أدخل المعاملة" action="#{transactionBean.insertTransaction}" ajax="false">
</p:commandButton>
</h:form>
环境是 JSF 2.2、Glassfish 4.0 和 primefaces 3.5。
请帮助我。我在这个问题上卡了三天。
谢谢
【问题讨论】:
标签: jsf file-upload multipartform-data selectonemenu