1

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

我已经嵌入了所有需要嵌入的页面,并且一切都按预期显示,但是有一个问题。

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

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

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

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

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

谢谢!

4

1 回答 1

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

于 2012-05-25T15:03:36.400 回答