oxa*_*xax 4 xml-namespaces jsf-2 mojarra viewparams jsf-2.2
我正在尝试使用Glassfish 4.0和Java EE 7 XML命名空间来测试下面的示例.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Title</title>
</h:head>
<h:body>
<h:form>
<ul>
<ui:repeat value="#{appLoad.movieList}" var="movie">
<li>
<h:link value="#{movie.title}" outcome="movie" includeViewParams="true">
<f:param name="id" value="#{movie.id}"/>
</h:link>
</li>
</ui:repeat>
</ul>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
它链接到以下页面movie.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<f:metadata>
<f:viewParam name="id" value="#{appLoad.movieId}"/>
<f:event listener="#{appLoad.movieDetail()}" type="preRenderView"/>
</f:metadata>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="2">
<h:panelGrid columns="1" width="400">
<h:panelGrid columns="1">
Title : <h:outputLabel value="#{appLoad.movie.title}"/>
</h:panelGrid>
</h:panelGrid>
</h:panelGrid>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
该#{appLoad}支持bean是
@ManagedBean
@RequestScoped
public class AppLoad {
@EJB
private MovieFacade movieFacade;
private Movie movie = new Movie();
private List<Movie> movieList;
private int movieId;
@PostConstruct
public void movieDetail(){
movieList = movieFacade.findAll();
movie = movieFacade.find(movieId);
System.out.println(movieId);
}
// Getters+setters.
}
Run Code Online (Sandbox Code Playgroud)
运行索引页面并单击该链接时,该URL会彻底更改为
result.xhtml?ID = 8
但是没有显示任何数据.它是空白的.我发现那#{appLoad.movieId}是null.换句话说,<f:viewParam>不设置此请求参数.
我唯一的工作是将XML命名空间更改回旧版本.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
Run Code Online (Sandbox Code Playgroud)
我猜我在这里弄错了.这个问题是如何引起的,我应该如何使用新的XML命名空间?
第xmlns.jcp.org一个Mojarra版本2.2.0和2.2.1中打破了处理新XML命名空间的方式.它已在Mojarra 2.2.2中修复(注意:链接中的票据描述了不同的问题症状,但在幕后,它基本上是相同的原因).建议升级到Mojarra 2.2.2.GlassFish 4.0捆绑了Mojarra 2.2.0.您可以从javaserverfaces.java.net获取JAR .您需要做的就是用更新的版本替换javax.faces.jarGlassFish /modules文件夹中的文件.
这种麻烦在第一个主要的GlassFish发布版本中并不罕见(所有这些都是准时准备好的).我建议等待使用Java EE 7,直到GlassFish 4.0.1或4.1发布,以避免将来出现意外.请注意,Apache Tomcat和JBoss AS等其他供应商需要花时间发布稳定的Java EE 7容器.他们目前还没有生产就绪版本.
| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |