【问题标题】:Problems with navigation cases from an embedded JSF 2.0 application来自嵌入式 JSF 2.0 应用程序的导航案例问题
【发布时间】:2012-06-01 03:52:06
【问题描述】:

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

  • 您应该在命令按钮操作中返回一个空字符串 ("")。这样页面将无法导航。

标签: jquery jsf navigation tomcat6


【解决方案1】:

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

只需返回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>

请注意,我添加了&lt;f:ajax&gt; 以获得更好的用户体验。

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多