Struts 2 嵌套迭代器

发布于 2024-08-23 00:12:45 字数 595 浏览 3 评论 0原文

我简直不敢相信,这么简单的事情在 Struts 2 中似乎很难做到。

这大概就是我想做的事情,因为它会在 Java 中完成。

for (Parent parent : parents){
  for (Child child: parent.getChildren()){
     System.out.println(child.getName());
  }
}

这应该转化为 Stuts 标签中类似的内容:

<s:iterator var="parent" value="parents">
  <s:iterator var="child" value="parent.children">
     <s:property value="child.name"/>
  <s:iterator>
<s:iterator>

我认为 parent.children 应该类似于 ${%(#parent.children)} 但我还没有找到 ${% 的正确组合(要使用的 # 个字符:-)。我还可以使用一个页面链接来解释何时使用其中的一个。

I can't believe how something this simple can seem so hard to do in Struts 2.

This is approximately what I would like to do as it would be done in Java.

for (Parent parent : parents){
  for (Child child: parent.getChildren()){
     System.out.println(child.getName());
  }
}

That should translate to something close to this in Stuts tags:

<s:iterator var="parent" value="parents">
  <s:iterator var="child" value="parent.children">
     <s:property value="child.name"/>
  <s:iterator>
<s:iterator>

I assume parent.children should be something like ${%(#parent.children)} but I have not found a right combination of ${%(# characters to use :-). I could also use a link to a page explaining when to use which one of these.

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

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

发布评论

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

评论(4

断肠人 2024-08-30 00:12:45

试试这个:

<s:iterator var="parent" value="parents">
    <s:iterator var="child" value="#parent.children">
        <s:property value="#child.name"/>
    <s:iterator>
<s:iterator>

Try this:

<s:iterator var="parent" value="parents">
    <s:iterator var="child" value="#parent.children">
        <s:property value="#child.name"/>
    <s:iterator>
<s:iterator>
半寸时光 2024-08-30 00:12:45

它对我有用:

<s:iterator value="parents">
    <s:iterator value="children">
        <s:property value="name" />
    </s:iterator>
</s:iterator>

It works for me:

<s:iterator value="parents">
    <s:iterator value="children">
        <s:property value="name" />
    </s:iterator>
</s:iterator>
小糖芽 2024-08-30 00:12:45

JSP 代码如下所示:

    <s:form action="saveaction" >
        <s:iterator value="lstBean" id="lstBean" status="outerStat">
            <s:textfield value="%{name}" name="lstBean[%{#outerStat.index}].name"/>
            <s:textfield value="%{amt}" name="lstBean[%{#outerStat.index}].amt"/>
            <s:textfield value="%{id}" name="lstBean[%{#outerStat.index}].id"/>
            <s:iterator value="%{lstString}" status="myStat">
                <s:textfield name="lstBean[%{#outerStat.index}].lstString[%{#myStat.index}]"/>
            </s:iterator>
        </s:iterator>
        <s:submit value="Click me to submit lstBean"/>
    </s:form>

以下是 JSP 中使用其 List 的 bean(XBean):

public class XBean
{    
private ArrayList<String> lstString=new ArrayList<String>();
private String name;
private Double amt;
private Integer id;
//Getters and setters of fields
}

现在您只需在提交操作 (saveaction) 中添加一个带有设置器的字段 lstBean,嘿,您就完成了。

This is how the JSP code will look like:

    <s:form action="saveaction" >
        <s:iterator value="lstBean" id="lstBean" status="outerStat">
            <s:textfield value="%{name}" name="lstBean[%{#outerStat.index}].name"/>
            <s:textfield value="%{amt}" name="lstBean[%{#outerStat.index}].amt"/>
            <s:textfield value="%{id}" name="lstBean[%{#outerStat.index}].id"/>
            <s:iterator value="%{lstString}" status="myStat">
                <s:textfield name="lstBean[%{#outerStat.index}].lstString[%{#myStat.index}]"/>
            </s:iterator>
        </s:iterator>
        <s:submit value="Click me to submit lstBean"/>
    </s:form>

Following is the bean(XBean) whose List is used in the JSP:

public class XBean
{    
private ArrayList<String> lstString=new ArrayList<String>();
private String name;
private Double amt;
private Integer id;
//Getters and setters of fields
}

Now you can simply have a field lstBean with setters in your submitting action (saveaction) and hey you are done.

忆悲凉 2024-08-30 00:12:45

对于 Struts 2.3.x,您可以使用此示例,摘自 http://struts.apache.org/release/2.3.x/docs/iterator-tag-examples.html

在此示例中,“国家/地区”是国家/地区对象的列表,每个对象都有一个名称和城市列表。每个城市都有一个名字。

<s:iterator value="countries">
    <s:iterator value="cities">
        <s:property value="name"/>, <s:property value="[1].name"/><br>
    </s:iterator>
</s:iterator>

它们引用堆栈上的特定位置:“[1]”。堆栈顶部位置 0 包含当前城市,由内部迭代器推送;位置 1 包含当前国家/地区,由外部迭代器推送到那里。

For Struts 2.3.x you can use this example, extracted from http://struts.apache.org/release/2.3.x/docs/iterator-tag-examples.html

In this example, 'countries' is a list of country objects, each of which has a name and a list of cities. Each city has a name.

<s:iterator value="countries">
    <s:iterator value="cities">
        <s:property value="name"/>, <s:property value="[1].name"/><br>
    </s:iterator>
</s:iterator>

They refer to a specific position on the stack: '[1]'. The top of the stack, position 0, contains the current city, pushed on by the inner iterator; position 1 contains the current country, pushed there by the outer iterator.

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