JSF2.0复合组件ID生成

JSF2.0复合组件ID生成,jsf,components,jsf-2,Jsf,Components,Jsf 2,我正在WebLogic11g上使用JSF2.0创建一个新的Web应用程序。我正在使用JSF Ajax进行表单提交。我对JSF还很陌生,所以仍在学习诀窍。主页在jQuery选项卡上有3个表单。原始代码有许多重复的输入字段,如用户名和密码等,id前面有一个表单id,即myform1:userName。我决定对复制字段使用复合组件是个好主意。这是我的组件代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

我正在WebLogic11g上使用JSF2.0创建一个新的Web应用程序。我正在使用JSF Ajax进行表单提交。我对JSF还很陌生,所以仍在学习诀窍。主页在jQuery选项卡上有3个表单。原始代码有许多重复的输入字段,如用户名和密码等,id前面有一个表单id,即myform1:userName。我决定对复制字段使用复合组件是个好主意。这是我的组件代码:

<!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:composite="http://java.sun.com/jsf/composite"
  xmlns:h="http://java.sun.com/jsf/html">

<composite:interface>
    <composite:attribute name="value" required="true"/>
</composite:interface>

<composite:implementation>

<label for="#{cc.id}">User Name</label>
<h:inputText
        id="#{cc.id}"
        size="15"
        value="#{cc.attrs.value}"
        required="true"
        label="User Name">
</h:inputText>
</composite:implementation>

</html>
下面是对xhtml中组件的调用:

<p>
    <cc:userName id="userName" value="#{soapTestingBackingBean.userName}"/>
</p>

现在的问题是,我的所有ID都添加了一个元素,因此变成了myForm1:userName:userName。虽然这不是一个显示障碍,但它确实意味着我的javascript现在必须引用长ID,在Ajax调用中也是如此,我通常执行@form,但呈现特定的元素。我试图使代码尽可能可读和可维护。所以,如果有人知道这是不是有一个优雅的作品,或者我错过了什么神奇的属性来关闭它,我将不胜感激。我确实尝试了tomahawk库中的forceID属性,但这只会在Ajax调用中造成额外的问题。谢谢

一些java脚本库jQuery对JSF2.0IDS表单的新格式有问题:elementId-因此不使用

$(function() {
    $( "#datepicker" ).datepicker();
});
我不得不使用

$(function() {
    $(document.getElementById('addform:datepicker')).datepicker();
});

你不必那样做。以下语法是我使用的:$[id=islRequestForm:requestData:requestData].toggle;