代码之家  ›  专栏  ›  技术社区  ›  braveterry

可以在JSF中更改元素id分隔符吗?

  •  9
  • braveterry  · 技术社区  · 15 年前

    例如,以下代码段:

    <h:form id="levelone">
        <h:inputText id="leveltwo" value="Test" />
    </h:form>
    

    生成以下标记:

    <form id="levelone" name="levelone" method="post" action="/test/testPage.html" 
          enctype="application/x-www-form-urlencoded">
       <input id="levelone:leveltwo" type="text" name="levelone:leveltwo" 
              value="Test" />
    </form>
    

    是否可以将自动生成的ID更改为使用不同于冒号的分隔符?

    levelone:leveltwo
    

    levelone-leveltwo
    

    我们正在使用 Mojo 我们的webapp中的JavaScript应用程序框架,它似乎不喜欢id中的冒号。

    3 回复  |  直到 15 年前
        1
  •  13
  •   Community kfsone    7 年前

    这在JSF1.x中是不可能的,但是由于JSF2.x,您可以在 web.xml 作为 init-param 属于 javax.faces.SEPARATOR_CHAR .

    : 即CSS标识符中的一个特殊字符,它表示一个伪选择器。如果这个原因对您来说是正确的,那么最好知道您可以通过以下方式在CSS中转义特殊字符 \

    因此,例如。

    #levelone\:leveltwo {
        color: blue;
    }
    

    #levelone\3A leveltwo

    当您打算将其用于 jQuery 或任何其他借助 CSS selectors

    var leveltwo = $('#levelone\\:leveltwo');
    


    或者,你也可以给它一个 styleClass

    <h:inputText styleClass="myinput" />
    

    产生

    <input type="text" class="myinput" />
    

    .myinput {
        color: blue;
    }
    

    另见

        2
  •  2
  •   Bozho    15 年前

    Tomahawk <t:inputText> 哪个有 forceId 属性在这里,您必须将其设置为 <t:inputText forceId="levelone-leveltwo" />

    : -

        3
  •  2
  •   Colin Gislason    15 年前

    在旧版本中,不可能。它是一个硬编码常数。在2.0中,您可以更改它。看见 this blog post