昨天我看到了一个关于Java Server Faces 2.0的演示文稿,虽然我现在是一个快乐的ASP.NET MVC/jQuery开发人员,但它看起来确实令人印象深刻.我最喜欢JSF的是大量支持AJAX的UI组件,这些组件似乎比ASP.NET MVC更快,特别是在AJAX重型站点上.集成测试看起来也很不错.
由于演示文稿只强调了JSF的优点,我也想听听另一方面的意见.
所以我的问题是:
我正在阅读JSF,它是一个UI框架并提供了一些UI组件.但它与jQueryUI,AngularJS,ExtJS甚至纯HTML,CSS和JavaScript中可用的组件数量有何不同或更好.
为什么有人要学习JSF?
我一直在使用JSF处理一个简单的Java EE项目.
<h:form id="phoneForm">
<h:dataTable id="phoneTable">
</h:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我试图通过设置CSS #phoneTable { ... }
,但它不起作用.在客户端检查HTML源代码时,JSF生成的HTML表格似乎以形式获取客户端ID id="phoneForm:phoneTable"
.我无法应用CSS via #phoneForm:phoneTable { ... }
,因为冒号表示伪选择器的开始并导致错误.
我怎么能在CSS选择器中使用它呢?
有没有办法告诉JSF它<table>
在使用时不应该呈现元素<h:selectOneRadio>
?我不使用表格,在这种情况下它完全没有意义.
任何帮助表示赞赏!
在阅读了JSF 2.2中的HTML5支持之后,我很惊讶地发现与在Netbeans中使用新的Web应用程序创建的模板文件中的先前Facelets版本相同的XHTML文档类型.唯一的区别是HTML标记在JSF 2.2中读取:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
Run Code Online (Sandbox Code Playgroud)
,而不是在较旧的JSF版本中如下:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
Run Code Online (Sandbox Code Playgroud)
使用XHTML并考虑到HTML5的承诺似乎有点不对劲.如果我从"已注册的库"而不是"服务器库"中选择它,我只能选择使用2.2.这是否会影响框架版本应用于项目的方式?
Facelets是否过分依赖XHTML来支持HTML5?
有活跃的JSF(或Primefaces)用户可以解释为什么默认情况下会发生这样的原因:为什么没有人对此做任何事情:
<p:commandLink id="baz" update=":foo:boop" value="Example" />
Run Code Online (Sandbox Code Playgroud)
哪个生成的标记在没有hacks的情况下无法在JavaScript或CSS中使用,通常应被视为无效:
<a href="javascript:void(0);" id=":foo:bar:baz">Example</a>
Run Code Online (Sandbox Code Playgroud)
id=":bar:baz:foo"
此处的属性包含冒号,这些冒号不是此属性的有效字符,至少从CSS角度来看.
虽然该属性可能根据规范有效,但它无法与真实的JavaScript和CSS实现一起使用.
简而言之,id
JSF中的默认属性生成无法用于前端开发.