条纹复选框和文本字段

发布于 2025-01-03 10:33:08 字数 512 浏览 0 评论 0原文

所有 -

我正在使用条纹为我正在处理的问题做一些表单输入,并且我一直在研究如何最好地使用条纹和复选框提交一对数据..例如我的页面如下所示:

我有一个选项列表,用户可以通过单击该框来启用选择,还可以通过在旁边的文本字段中输入数据来为该项目提供一些输入:

<tr>
<td><stripes:checkbox name="item.enable" value="${item.id}"/></td>
<td><stripes:text name="item.value" value="${item.value}"/></td>
</tr>
.....
next item...

提交表单时,我希望我的 Collection<项目> 至已填充,但情况并非如此。

我如何才能最好地使用复选框字段提交一对项目。

提前致谢。

..克里斯

All -

I'm using stripes to do some form input for a problem I'm working on and I'm stuck on how best to submit a a pair of data using stripes and checkboxes.. for example my page looks like the following:

I have a list of options where users can enable a selection by clicking the box, and also supply some input for that item by entering data into the text field next to it:

<tr>
<td><stripes:checkbox name="item.enable" value="${item.id}"/></td>
<td><stripes:text name="item.value" value="${item.value}"/></td>
</tr>
.....
next item...

When the form is submitted I'd expect my Collection<Item> to be populated yet that's not the case..

How can I best submit a pair of items using the check box fields.

Thanks in advance.

..Chris

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

国际总奸 2025-01-10 10:33:08

阅读有关索引属性的文档。您需要通过将它们命名为 items[0]items[1] 等来告诉 Stripes 您有多个项目:

<tr>
  <td><stripes:checkbox name="items[0].enable" value="${item.id}"/></td>
  <td><stripes:text name="items[0].value" value="${item.value}"/></td>
</tr>
<tr>
  <td><stripes:checkbox name="items[1].enable" value="${item.id}"/></td>
  <td><stripes:text name="items[1].value" value="${item.value}"/></td>
</tr>

这假设您的操作 bean 有一个 < code>setItems(Listitems) 方法,该 Item 类具有公共无参数构造函数,并且具有 setEnable(String itemId)和一个setValue(String value) 方法。

Read the documentation on indexed properties. You need to tell Stripes that you have multiple items, by naming them items[0], items[1], etc.:

<tr>
  <td><stripes:checkbox name="items[0].enable" value="${item.id}"/></td>
  <td><stripes:text name="items[0].value" value="${item.value}"/></td>
</tr>
<tr>
  <td><stripes:checkbox name="items[1].enable" value="${item.id}"/></td>
  <td><stripes:text name="items[1].value" value="${item.value}"/></td>
</tr>

This supposes that you action bean has a setItems(List<Item> items) method, that the Item class has a public no-arg constructor, and has a setEnable(String itemId) and a setValue(String value) method.

染柒℉ 2025-01-10 10:33:08

我会将其包装在 JSTL 'forEach' 标签 中,并将这些项目放在列表。与 JB Nizet 所说的类似,您还需要在操作 bean 中使用公共设置器。如果您将 CollectionList 之外的某些实现一起使用,则以下代码段将不起作用。

<c:forEach var='itemIndex' begin='0' end='2'>
    <c:set scope='page' var='item' value='${items[itemIndex]}'>
    <tr>
      <td><stripes:checkbox name="items[${itemIndex}].enable" value="${item.id}"/></td>
      <td><stripes:text name="items[${itemIndex}].value" value="${item.value}"/></td>
    </tr>
</c:forEach>

还有另一种情况,您不希望列表默认为 3 项。我想到的是当列表已经填充时。如果是这种情况,我会将 的 'end' 属性更改为: ${fn:length(actionBean.items) == 0 ? 3 : fn:length(actionBean.items)-1}

I would wrap this in a JSTL 'forEach' tag and I would put the items in a List. Similar to what JB Nizet said, you also need public setters in the action bean. If you are using Collection<Item> with some implementation other than List<Item> the below snippet won't work.

<c:forEach var='itemIndex' begin='0' end='2'>
    <c:set scope='page' var='item' value='${items[itemIndex]}'>
    <tr>
      <td><stripes:checkbox name="items[${itemIndex}].enable" value="${item.id}"/></td>
      <td><stripes:text name="items[${itemIndex}].value" value="${item.value}"/></td>
    </tr>
</c:forEach>

There is another case when you don't want the list to default to 3 items. The one I'm thinking of is when the list is already populated. If that is the case I would change the 'end' attribute of the <c:forEach> to be: ${fn:length(actionBean.items) == 0 ? 3 : fn:length(actionBean.items)-1}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文