JSF无法设置动态ID输入组件

我的形式如下:JSF无法设置动态ID输入组件

当用户点击 “+添加” 一个新的距离输入显示出来:

用户可以根据需要多次重复此操作,但必须填写所有距离,并且必须为丢失的数据提供单个消息:

所以我试图建立距离输入的动态ID。但是,当我尝试传递动态值时,一切都失败了。到现在为止我已经尝试过两种不同的技术:使用

  • 结合HtmlDataTable的rowIndex位置< - 它总是显示-1
  • 设置id作为距离类<的属性 - 丑陋异常

这里是我的代码:

支持bean:

private List<Distance> distances; 

private HtmlDataTable distancesUI;

public void addDistance(ActionEvent e) {

distances.add(new Distance());

}

JSPX:

<h:dataTable 

binding="#{Bean.distancesUI}"

value="#{Bean.distances}"

var="distance">

<h:column>

<h:inputText

id ="distance_#{Bean.distancesUI.rowIndex}" // <- always renders "distance_-1"

value="#{distance.value}" />

</h:column>

</h:dataTable>

我需要能够展现个人 “需要” 的消息。有任何想法吗?

在此先感谢

回答:

我需要能够展现个人“需要”的消息。有任何想法吗?

为此,您不需要拨动ID。 JSF会为你做。只要做到

<h:dataTable id="table" value="#{bean.distances}" var="distance"> 

<h:column>

<h:inputText id="distance" value="#{distance.value}" required="true" />

<h:message for="distance" />

</h:column>

</h:dataTable>

这将在生成的HTML落得像如下:

<table id="form:table"> 

<tr><td><input id="form:table:0:distance" /></td></tr>

<tr><td><input id="form:table:1:distance" /></td></tr>

<tr><td><input id="form:table:2:distance" /></td></tr>

...

</table>

右击在浏览器页面,并选择查看源看到它自己。

任何验证错误只会显示在与输入相同的行中。

以上是 JSF无法设置动态ID输入组件 的全部内容, 来源链接: utcz.com/qa/263265.html

回到顶部