嵌入式JSF 2.0应用程序导航案例的问题

时间:2012-05-25 14:47:08

标签: jquery jsf navigation tomcat6

我正在开发一个JSF电子表单应用程序。此应用程序需要嵌入另一个Web站点(一个用JSP编写)。我可以嵌入这个的唯一方法是在文档准备阶段通过jQuery。

我已经拥有了我需要嵌入的所有页面,所有内容都按预期显示,但有一个问题。

在我的新表单/编辑表单网页上,我有一个提交按钮,用于更新表单或在服务器端创建一个新表单,然后在操作完成后导航到成功的屏幕或故障屏幕。

当嵌入此页面时,此按钮仍然在服务器上执行操作(太棒了!)但是,正如预期的那样,将页面重定向到成功屏幕。我想做的是留在“父”屏幕上,只需用成功页面/失败页面替换嵌入页面。

我认为我可以采用的方式是以某种方式从JSF拦截导航事件并从该事件重新加载嵌入页面。这里的关键是在提交后不要离开父页面。

我在Tomcat 6上运行JSF2.0(Apache impl。),jQuery版本是1.3。

我希望这很清楚..如果你们需要更多信息,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:2)

  

当嵌入此页面时,此按钮仍然在服务器上执行操作(太棒了!)但是,正如预期的那样,将页面重定向到成功屏幕。我想做的是留在“父”屏幕上,只需用成功页面/失败页面替换嵌入页面。

只需返回nullvoid并有条件地呈现内容。

如此

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>以获得更好的用户体验。