在JSF中静态引用动态id

Statically reference a dynamic id in JSF

本文关键字:动态 id 引用 静态 JSF      更新时间:2023-09-26

我有一个输入文本框,我想用发生在另一个对象上的onclick事件的值更新。在这种情况下,我知道test。id0不正确,需要为paymentAmountOne动态生成的id。我曾尝试使用绑定,但这不起作用。

<div id="minDueLinkDiv" class="normalLink" onclick="dijit.byId('test.id0').attr('value', '#{userInfo.minAmt}');">
<h:outputText id="minDueLink" styleClass="outputText" value="#{msg.minDue}"/></div>
<h:inputText required="true" tabindex="1" styleClass="inputText" id="paymentAmountOne" value="#{userInfo.paymentAmountOne}" style="width:115px" maxlength="15" >
  <j4j:idProxy id="paymentAmountOne_"/>
</h:inputText>

任何帮助都是感激的。

我添加了。paymentamountone

这是仍然不能工作的渲染内容。

<div id="minDueLinkDiv" class="normalLink" onclick="dojo.query('.paymentAmountOne').attr('value', '429.56');">
<span id="paymentAmountOne_" title="j_id_jsp_1879829640_2:paymentAmountOne"></span>
<div id="widget_j_id_jsp_1879829640_2:paymentAmountOne" class="dijit dijitReset dijitInlineTable dijitLeft inputText paymentAmountOne dijitTextBox" wairole="presentation" dojoattachevent="onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse" role="presentation" style="width: 115px;" widgetid="j_id_jsp_1879829640_2:paymentAmountOne" value="429.56">

我错过了什么吗?我也用dijit试过。

您可以通过类找到您的输入。在你的例子中:

<div id="minDueLinkDiv" class="normalLink" onclick="dojo.query('.paymentAmountOne').attr('value', '#{userInfo.minAmt}');">
<h:outputText id="minDueLink" styleClass="outputText" value="#{msg.minDue}"/></div>
<h:inputText required="true" tabindex="1" styleClass="inputText paymentAmountOne" id="paymentAmountOne" value="#{userInfo.paymentAmountOne}" style="width:115px" maxlength="15" >
  <j4j:idProxy id="paymentAmountOne_"/>
</h:inputText>

我不确定在dojo中按类查找,您可能需要适应。

谢谢你。我是JSF新手,没有意识到可以通过设置表单id

来消除表单中的动态id。
     <h:form id="paymentForm">, 

然后引用你建议的paymentForm:paymentAmountOne.

谢谢。