我正在开发一个JSF电子表单应用程序。此应用程序需要嵌入另一个Web站点(一个用JSP编写)。我可以嵌入这个的唯一方法是在文档准备阶段通过jQuery。
我已经拥有了我需要嵌入的所有页面,所有内容都按预期显示,但有一个问题。
在我的新表单/编辑表单网页上,我有一个提交按钮,用于更新表单或在服务器端创建一个新表单,然后在操作完成后导航到成功的屏幕或故障屏幕。
当嵌入此页面时,此按钮仍然在服务器上执行操作(太棒了!)但是,正如预期的那样,将页面重定向到成功屏幕。我想做的是留在“父”屏幕上,只需用成功页面/失败页面替换嵌入页面。
我认为我可以采用的方式是以某种方式从JSF拦截导航事件并从该事件重新加载嵌入页面。这里的关键是在提交后不要离开父页面。
我在Tomcat 6上运行JSF2.0(Apache impl。),jQuery版本是1.3。
我希望这很清楚..如果你们需要更多信息,请告诉我。
谢谢!
答案 0 :(得分:2)
当嵌入此页面时,此按钮仍然在服务器上执行操作(太棒了!)但是,正如预期的那样,将页面重定向到成功屏幕。我想做的是留在“父”屏幕上,只需用成功页面/失败页面替换嵌入页面。
只需返回null
或void
并有条件地呈现内容。
如此
public void submit() {
results = processAndGetIt();
}
与例如
<h:form>
...
<h:commandButton value="Submit" action="#{bean.submit}">
<f:ajax execute="@form" render=":results" />
</h:commandButton>
</h:form>
<h:panelGroup id="results">
<h:panelGroup rendered="#{not empty bean.results}">
Results have been retrieved: #{bean.results}.
</h:panelGroup>
</h:panelGroup>
请注意,我添加了<f:ajax>
以获得更好的用户体验。