相关疑难解决方法(0)

如何在faces-config.xml中不使用navigation-case的情况下在两个页面之间实现JSF导航

我正在寻找另一种JSF导航方式,而不是提到导航案例faces-config.xml.

目前我正在使用faces-config.xml导航.我想清理它.

请建议所有其他方式,以便我可以使用任何适合我的需要.

jsf jsf-1.2

2
推荐指数
1
解决办法
2万
查看次数

在新选项卡/窗口中打开链接,而不会丢失当前 JSF 页面的视图范围

我需要2.xhtml在当前 JSF 页面(例如1.xhtml)的新选项卡中打开一个新的JSF 页面(例如)。我应该使用哪个 JSF 组件?<h:commandLink>或者<h:outputLink>

1.xhtml单击链接以2.xhtml在新选项卡中打开后,我不想失去当前页面的范围。

的豆1.xhtml@ViewScoped。我应该把它改成@RequestScoped吗?

navigation jsf new-window view-scope

2
推荐指数
1
解决办法
7195
查看次数

Faces Navigation在JSF2中没有真正起作用

我正在使用JSF 2.0

这是我的faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is not required if you don't need any extra configuration. -->
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">

    <navigation-rule>
        <from-view-id>/pages/test/test.html</from-view-id>
        <navigation-case>
            <from-outcome>write</from-outcome>
            <to-view-id>/pages/test/test-write.html</to-view-id>
        </navigation-case>

    </navigation-rule>

</faces-config>
Run Code Online (Sandbox Code Playgroud)

TestController.java

@ManagedBean(name="testController")
@SessionScoped
public class TestController implements Serializable {

    private static final long serialVersionUID = -3244711761400747261L; 

    public String test() {


        return "write?faces-redirect=true";
}
Run Code Online (Sandbox Code Playgroud)

在我的test.xhtml文件中

<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/WEB-INF/templates/default.xhtml">
    <ui:define name="content">
            <h:form>
                    <h:commandButton action="#{testController.test()}" value="test" />  
            </h:form>
    </ui:define>

</ui:composition>
Run Code Online (Sandbox Code Playgroud)

这是我的web.xml

<web-app …
Run Code Online (Sandbox Code Playgroud)

navigation faces-config java-ee-6 jsf-2

1
推荐指数
1
解决办法
7885
查看次数

上一页URL JSF

我正在使用JSF应用程序,我看到浏览器导航栏中显示的URL始终是我刚刚离开的页面,而不是我正在使用的页面.

java jsf

1
推荐指数
1
解决办法
1610
查看次数

处理后退按钮和生成的Phase_ID

我遇到以下情况:

  1. JSF(MyFaces 2.1.7和RichFaces 3.3.3)
  2. 会话Scoped Bean TEST_PAGE
  3. 将使用BACK按钮结束的用户
  4. 服务器上的状态保存

场景:

  • 用户单击链接以导航到具有Session Scoped bean的页面(TEST_PAGE)
  • 用户单击另一个链接
  • 用户按下brwoser的按钮,将它们放回TEST_PAGE
  • 用户尝试在此页面中搜索

在搜索时,支持bean会抛出异常,因为有很多null值.原因是,当他们按下"搜索"时,页面处于RESTORE_VIEW同步状态.

我尝试在页面上禁用缓存,强制用户刷新后退按钮上的页面,但是很多用户抱怨"为什么我不能使用后退按钮,我之前可以做到!" 由于他们认为应用程序在"确认表单重新提交"页面chrome/IE/Firefox show中崩溃,导致帮助台门票,因此管理人员希望我寻找替代方案.

我的问题:

可以检测RESTORE_VIEW的当前Phase_ID,而不是在此阶段进行任何处理以避免异常,但仅此一点,只需重新调整即可为用户提供部分页面视图.是否可以RENDER_RESPONSE在此方案中放入页面然后进行处理?这应该刷新页面.

问题第2部分

由于推荐(或普通/良好)实用是禁用动态页面上的缓存,我已经这样做了,并且必须重新教育顽固的用户.

但是我有以下问题.

当按下具有禁用缓存的页面上的"返回"按钮时,浏览器会显示"确认表单重新提交"(chrome),用户可以按Refresh / F5Enter键.

如果Refresh/ F5是动作,一切都可以,我检测到RESTORE_VIEW相位并避免在该阶段中进行任何处理并让处理在RENDER_RESPONSE阶段完成.但是,如果Enter按下,则PhaseID处于,RENDER_RESPONSE(6)但是几个下拉控件的值为null,这会导致页面失败.所以我进行检查以检测这些情况并显示FaceMessage以告诉用户刷新页面.

问题是,我可以强制页面刷新而不是强制用户这样做吗?此页面的导航案例格式为:

     <navigation-rule>
      <navigation-case>
       <from-outcome>/app/ord/r1</from-outcome>
       <to-view-id>/jsp/ordersHistory.jsp</to-view-id>
      </navigation-case>
     </navigation-rule>
Run Code Online (Sandbox Code Playgroud)

我已经看到在线代码片段faces-redirect=true用于强制重新加载页面,但我无法让它工作!有什么建议?

jsf jsf-2

0
推荐指数
1
解决办法
2553
查看次数