我正在使用Weblogic 11g上的JSF2.0创建新的Web应用程序。我正在使用JSF Ajax进行表单提交。我对JSF很新,所以还在学习绳索。主页面在jQuery选项卡上各有3个表单。原始代码有很多重复的输入字段,如userName和password等(id前缀为表单id,即myform1:userName)。我决定将复合组件用于重复的字段是个好主意。这是我的Conponent代码:
<!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中的Component的调用:
<p>
<cc:userName id="userName" value="#{soapTestingBackingBean.userName}"/>
</p>
现在的问题是我的所有id都有一个添加的元素,所以变成了myForm1:userName:userName。虽然这不是一个显示停止,但它确实意味着我的javascript现在必须引用long ID并且在我的Ajax调用中也是相同的(我通常执行@form但渲染特定元素)。我正在尝试使代码尽可能可读和可维护。所以,如果有人知道是否有一个优雅的工作,或者可能是一些魔法属性我错过了关闭,所以将不胜感激。我确实尝试过tomahawk库中的forceID属性,但这只会导致我的Ajax调用出现其他问题。谢谢。
答案 0 :(得分:0)
一些java脚本库jQuery遇到jsf 2.0 ids形式的新格式问题:elementId - 所以不使用
$(function() {
$( "#datepicker" ).datepicker();
});
我必须使用
$(function() {
$(document.getElementById('addform:datepicker')).datepicker();
});