【发布时间】:2012-02-25 15:15:31
【问题描述】:
我有一个使用rich:fileUpload 和a4j:commandButton 的页面我想要实现的是,第一次加载页面时应该出现fileUpload(被渲染,我的backingBean 默认为true,因此它可以正确渲染)当用户点击命令按钮时,我很想隐藏 fileUpload 并显示outputText(这没有发生,根本没有错误)
如何解决这个问题,我的页面看起来像
<div id="content">
<a4j:outputPanel id="contentForm">
<h:form enctype="multipart/form-data"
rendered="#{uploadBean.formRendered}">
<br/><br/>
<h:selectOneRadio value="#{uploadBean.selectedOption}">
<f:selectItems value="#{uploadBean.loadOptions}"/>
</h:selectOneRadio>
<br/>
<rich:fileUpload addLabel="Agregar" clearAllLabel="Quitar todos"
clearLabel="Quitar" deleteLabel="Quitar"
doneLabel="Completado" uploadLabel="Subir archivos"
fileUploadListener="#{uploadBean.doUpload}"
acceptedTypes="txt, csv"
noDuplicate="true"/>
<a4j:commandButton value="Iniciar validación"
action="#{uploadBean.doLaunchProcess}"
render="processLabel"
execute="@form"
/>
</h:form>
</a4j:outputPanel>
<a4j:outputPanel id="processLabel">
<h:outputText
value="#{uploadBean.processStarted}"
rendered="#{not uploadBean.formRendered}"/>
</a4j:outputPanel>
</div>
commandButton的动作代码为:
public String doLaunchProcess() {
formRendered = false;
InfoValidator iv = new InfoValidator(loadOptions,
selectedOption, userBean.getDependencia(),
userBean.getTipoDependencia(), userBean.getUsuario(),
userBean.getIdUsuario(), userBean.getEmail());
iv.start();
return "carga-archivos";
}
似乎formRendered 总是被评估为真,当我希望它为假时,一旦用户单击按钮,因此 fileUpload 隐藏并显示 outputText。
更新 基本上我想要的是用户上传文件,当用户点击按钮时,fileUpload 组件消失并且出现 outputText 并说“感谢上传”
也许我的方法是错误的,只是让我朝着正确的方向前进,我对 ajax 的东西有点困惑。
干杯,
【问题讨论】:
-
如果您尝试使用 rerender="processLabel" 而不是 render="processLabel"
-
a4j:commandButton 没有任何
reRender属性。我使用的是richfaces 4.1 和 Mojarra 2.1.6 和 Tomcat -
我认为它支持我使用的 cas :) 请检查stackoverflow.com/a/2243473/706695 或docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/…
-
我认为
reRender被render取代了...我猜。不过感谢您的帮助。 -
很高兴你解决了问题:)
标签: ajax jsf richfaces rendering