使用 class 属性而不是 JSF 组件的 styleClass 实际上有效,为什么?
Using class attribute instead of styleClass of a JSF component actually works, why?
据我了解,我们需要使用 styleClass=
,因为 JSF 组件不支持仅使用 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>
这会产生
<?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>
为什么会这样?它显然不只是通过任何未知标签,因为 anothertag
被删除了。
这实际上是由视图技术 Facelets 完成的,而不是由 JSF 组件本身完成的。 Facelets 有一个 alias for class
属性,它自动映射到 styleClass
。这是作为对“设计师友好的 Facelets”中使用的 jsfc
属性的支持的一部分实现的,它应该使这样的事情成为可能:
<input type="text" jsfc="h:inputText" class="foo" />
如果您将 JSF 与不同的视图技术一起使用(尽管到目前为止,none 是 Facelets 的重要替代品,并且 JSP 已被弃用),则无法保证 <h:inputText class>
会起作用。
另请参阅:
- Is there a way to run a JSF page without building the whole project?
据我了解,我们需要使用 styleClass=
,因为 JSF 组件不支持仅使用 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>
这会产生
<?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>
为什么会这样?它显然不只是通过任何未知标签,因为 anothertag
被删除了。
这实际上是由视图技术 Facelets 完成的,而不是由 JSF 组件本身完成的。 Facelets 有一个 alias for class
属性,它自动映射到 styleClass
。这是作为对“设计师友好的 Facelets”中使用的 jsfc
属性的支持的一部分实现的,它应该使这样的事情成为可能:
<input type="text" jsfc="h:inputText" class="foo" />
如果您将 JSF 与不同的视图技术一起使用(尽管到目前为止,none 是 Facelets 的重要替代品,并且 JSP 已被弃用),则无法保证 <h:inputText class>
会起作用。
另请参阅:
- Is there a way to run a JSF page without building the whole project?