java - 在 JSF 中存储 View ID

标签 java jsf

我想了解 JSF 是如何存储 View 和恢复 View 的。我读过它正在为每个 View 创建单独的 View ID 并将其存储在服务器上。然后它检索。以下是我的问题:

  • 在什么基础上创建和存储 View ID?
  • 它是根据 faces-config.xml 中声明的 JSP 创建的吗?
  • 基本上是为每个 JSP 创建一个 View ID 吗?
  • 如何传递 View ID 以呈现响应?是不是传入了请求参数?

最佳答案

In what basis view id is created and stored?

View ID 是 View 文件的上下文相对路径。例如。 /foo.jsp/foo.xhtml . ViewHandler实现负责创建它并将其存储在 UIViewRoot 中.

Is it created based on the JSP's declared on the faces-config.xml?

那些不一定需要在 faces-config.xml 中的任何地方声明.对于每个传入 请求,它都是由底层 HttpServletRequest 从请求 URI 中提取的对象由其 getPathInfo() getServletPath() 方法,取决于是否 FacesServlet本身分别用前缀模式 ( /faces/* ) 或后缀模式 ( *.jsf ) 进行映射。

当 JSF 需要根据 <navigation-case> 导航到 View 时在 faces-config.xml ,然后从中简单地提取新的 View ID 和一个新的 UIViewRoot在调用操作阶段结束时创建。否则,JSF 只会返回到发起请求时的相同 View 。

Basically is it created for the each JSP one view ID?

是的,每个 View 都有自己唯一的标识符,基本上就是它在 web 应用程序上下文中的位置。

How view ids are passed to render the response? Is it passed in the request parameter?

它们存储在 UIViewRoot 中这反过来又可以通过 FacesContext#getViewRoot() 获得. ViewHandler实现只是调用 getViewId() renderView() 期间方法。

关于java - 在 JSF 中存储 View ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819738/

相关文章:

java - 在 jfreechart 中定位数据点标签

java - 从移动设备到服务器的强大文件传输

java - 给定一棵二叉树,找出同一层的2个节点之间的水平距离,同时计算该节点不存在的位置

jquery - 如何自定义布局 h :selectOneRadio

jsf - 在 PrimeFaces Extensions pe :inputPhone dropdown 中本地化国家

javascript - 带有 jsf 组件的不显眼的 javascript ...怎么样?

java - HashMap如何保证使用key的hashcode计算出的索引在可用范围内?

java - Android Studio ORMLite 配置文件 - 找不到原始目录

java - Tomcat7 上的 JSF 与 Java6 系统时间显示委内瑞拉时间

java - JRebel 开启时 CPU 使用率高