我正在尝试使用包含输入字段的元素创建<p:diagram>
,但问题是对于每个添加的元素,每个输入字段的名称和ID都相同。
我试图给每个字段一个唯一的id是为每个元素添加一个bean生成的ID,但这只是在最终代码中被省略了。这是我的EL / xhtml:
<p:diagram value="#{Controller.model}" style="height:600px;width:1500px" styleClass="ui-widget-content" var="lrvEl" scrollable="true">
<f:facet name="element">
<div onmouseleave="nodeOnMouseOut(this)" onclick="nodeOnClick(this)">
<h:outputText value="#{lrvEl.title}" style="display:block;margin-top:1em;width:100%;height:10px;padding-left:4px"/>
<h:outputText value="#{lrvEl.description}" style="display:block;margin-top:1em;width:100%;height:10px;padding-left:4px"/>
<h:inputText id="inputEpValue_#{lrvEl.id}" name="inputEpValue_#{lrvEl.id}" onchange="setScoreVal('#{lrvEl.id}', this)" rendered="#{lrvEl.isScore()}" style="display:block;margin-top:1em;height:10px;padding-left:4px">
</h:inputText>
</div>
</f:facet>
<p:ajax event="connect" listener="#{Controller.onConnect}" />
<p:ajax event="disconnect" listener="#{Controller.onDisconnect}" />
<p:ajax event="connectionChange" listener="#{Controller.onConnectionChange}" />
</p:diagram>
这里重要的一点是<h:inputText id='inputEpValue_#{lrvEl.id}' ... >
- 它出现在页面上,如下所示:
editor:LRVContent:overlayForm_lm:inputEpValue
好像没有设置值,但是,正如您在onchange字段中看到的那样,我使用相同的星座。这将呈现为onchange="setScoreVal('ep:2', this)"
,以便工作。
我不能以这种方式动态设置元素的ID吗?还有另一种方式吗?
编辑: 我想要这样做的实际原因是,如果我有多个具有相同生成ID的输入,当我点击其中任何一个时,焦点(/ cursor)将自动跳转到最后生成的输入字段,这意味着我将无法实际更改任何字段的值。