我正在做一个JSF2项目。我使用mojarra 2.x,PrimeFaces 2.2RC2,Tomcat 6.x和Google Guice。
目前我使用commandlink浏览我的网站,因此每次我想重新加载时,导航器会要求重新提交值。我在网上看到可以重定向。使用outputlink或commandlink进行导航会更好吗?
很多时候我使用带有这样的参数的动作:
<:commandlink action="#{bean.doSomething(item)}" />
这好还是坏?
JSF中是否存在一些用于命名操作,属性的约定?或者你的惯例是什么?
当我写一个xhtml页面时,最好只使用组件还是只在必要时?
实施例
#{bean.foo}
或
<h:outputText value="#{bean.foo}" />
使用<c:if>
之类的JSTL标签怎么样?我使用了一些,因为我在恢复视图时使用<ui:fragment rendered="">
时遇到了一些问题。
答案 0 :(得分:4)
<h:commandLink>
触发POST请求。这对于页面到页面的导航毫无意义。它不是用户友好的,也不是SEO友好的。只需使用<h:outputLink>
,<h:link>
甚至<a>
即可触发普通的HTTP GET请求。
如果item
后面的实例中已存在#{bean}
,那么这是不必要的。如果不是,那就完全没问题了。您只需要记住,您的代码不再向后兼容Servlet 2.5容器,而JSF 2.0本身在Servlet 2.5上向后兼容。它就是一个Servlet 3.0 / EL 2.2功能(我只想知道如何让它在Tomcat 6上运行。你不是在使用Tomcat 7还是在使用JBoss EL?)。
我不会那么在乎,例如ProductManager
,ProductController
,Products
等等,只要从视图方面尽可能自我记录。即不是#{pc.submit}
或#{pd.column1}
,而是#{products.find}
和#{product.name}
。
在Facelets中,两者同样有效。两者都是XML转义的。 <h:outputText>
仅具有以下优势:UIViewRoot
可以轻松访问,并添加styleClass
,id
,rendered
等属性
只要您想要控制视图的构建方式,而不是视图的呈现方式,就可以使用它,那就完全没问题了。请注意,那些http://java.sun.com/jstl/core
标签由Facelets本身提供,而不是由好的'JSP JSTL JAR'(在taglib URI中有/jsp
)提供。