Primefaces Diagram - 为DOM元素生成ID

时间:2017-12-07 14:15:24

标签: jsf primefaces

我正在尝试使用包含输入字段的元素创建<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)将自动跳转到最后生成的输入字段,这意味着我将无法实际更改任何字段的值。

0 个答案:

没有答案