Eva*_*les 2 jsf attributes class jsf-2
据我所知,我们需要使用,styleClass=因为JSF组件不支持使用just class=.
我最近注意到一些正在使用的组件class=仍然正确渲染.作为一个最小的例子,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Simple JSF Facelets page</title>
</h:head>
<h:body>
<h:inputText class="wut" anothertag="hi" value="me"/>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
这产生了
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link type="text/css" rel="stylesheet" href="/individuallifefaz/javax.faces.resource/theme.css.xhtml?ln=primefaces-aristo"/>
<title>Simple JSF Facelets page</title></head>
<body>
<input type="text" name="j_idt5" value="me" class="wut"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这为什么有效?它显然不仅仅是通过任何未知的标签,因为它anothertag被剥离了.
这实际上是由视图技术Facelets完成的,而不是由JSF组件本身完成的.Facelets有一个别名的class属性,它会自动映射到styleClass.这是作为jsfc"设计师友好的Facelets"中使用的属性支持的一部分实现的,这应该使这样的事情成为可能:
<input type="text" jsfc="h:inputText" class="foo" />
Run Code Online (Sandbox Code Playgroud)
如果你使用不同的视图技术使用JSF(尽管到目前为止还没有一个是Facelets的一个重要替代品,并且不推荐使用JSP),那么就不能保证它<h:inputText class>会起作用.