Class 使用类属性而不是JSF组件的样式类实际上是可行的,为什么?

Class 使用类属性而不是JSF组件的样式类实际上是可行的,为什么?,class,jsf,jsf-2,attributes,Class,Jsf,Jsf 2,Attributes,据我所知,我们需要使用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-t

据我所知,我们需要使用
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>

简单JSF Facelets页面
这就产生了

<?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>

简单JSF Facelets页面

为什么会这样?它显然不仅仅是通过任何未知的标记,因为另一个标记被剥离了。

这实际上是由视图技术Facelets完成的,而不是JSF组件本身。Facelets具有for
class
属性,该属性自动映射到
styleClass
。这是作为对“设计器友好的Facelets”中使用的
jsfc
属性的支持的一部分实现的,这应该使类似的事情成为可能:

<input type="text" jsfc="h:inputText" class="foo" />

如果您将JSF与另一种视图技术结合使用(尽管到目前为止还没有一种可以替代Facelets的技术,而且JSP也被弃用),那么就不能保证
能够工作

另见: