Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据表外部的引用表单组件<;h:表格>;_Javascript_Ajax_Jsf_Xhtml - Fatal编程技术网

Javascript 数据表外部的引用表单组件<;h:表格>;

Javascript 数据表外部的引用表单组件<;h:表格>;,javascript,ajax,jsf,xhtml,Javascript,Ajax,Jsf,Xhtml,我想从commandlink中的datatable标记中引用下表中的component id=constractidinputtext。我想在render属性中使用它的'id',而不是@all。我使用@all down只是因为我无法引用id。datatable位于标记的外部和上方 <h:form id="contracts"> <h:outputScript library="js" name="common.js" target="head"/> <h

我想从commandlink中的datatable标记中引用下表中的component id=constractidinputtext。我想在render属性中使用它的'id',而不是@all。我使用@all down只是因为我无法引用id。datatable位于标记的外部和上方

<h:form id="contracts">
   <h:outputScript library="js" name="common.js" target="head"/>
   <h:panelGrid columns="3"   columnClasses="rightalign,leftalign,leftalign">

   <h:outputLabel for="contractIdInputText" rendered="true" value="Contract Nooo.: " />
   <h:inputText id="contractIdInputText" required="true"                                         value="#contractManager.newContractId}" />
</form>

这是数据表的commandlink:

 <h:commandLink id="editLink" value="#{bundle.ListUnitEditLink}" 
     action="#{contractManager.updateContract}">
     <f:ajax onevent="disablePK" render="@all" />
 </h:commandLink>


链接中ajax的全部用途是在单击commandlink并填充表单时禁用表单组件。我还注意到,正如使用@all做我想做的事情一样(使用禁用的inputText填充表单),它导致我需要在数据表中的commandlink上单击commandlink两次,表单才能填充另一项。为什么会发生这种情况?

如果它们不在同一个父组件中,那么您应该只通过其绝对客户机ID而不是(无效)相对客户机ID引用另一个组件。绝对客户机ID是完整的客户机ID(如您在生成的HTML输出中所看到的),前缀为命名容器分隔符(默认为

所以,这应该可以

<f:ajax ... render=":contracts:contractIdInputText" />

(假设
本身不在另一个
NamingContainer
父容器中,再次检查生成的HTML输出以确保)


至于为什么需要单击两次命令链接,这很可能与。修复方法是在
呈现中显式包含另一种形式。另请参见。

如果它们不在同一父组件中,则应仅通过另一组件的绝对客户机ID而不是(无效)相对客户机ID引用另一组件。绝对客户机ID是完整的客户机ID(如生成的HTML输出中所示),前缀为命名容器分隔符(默认为

所以,这应该可以

<f:ajax ... render=":contracts:contractIdInputText" />

(假设
本身不在另一个
NamingContainer
父容器中,再次检查生成的HTML输出以确保)


至于为什么需要单击命令链接两次,这很可能与有关。修复方法是在
渲染中显式地包含另一种形式。另请参见。

我将整个数据表放在一个标记中,并删除了包含CommandLink的标记。这解决了CommandLink上单击两次的问题。我将整个datatable并删除了包含CommandLink的标记。这解决了CommandLink上单击两次的问题。