سؤال

لا أستطيع أن أصدق كيف يمكن أن يبدو هذا الشيء البسيط صعبًا للغاية في الدعامات 2.

هذا ما أود أن أفعله كما سيتم في جافا.

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)} لكنني لم أجد مزيجًا صحيحًا من $ {٪ (# أحرف لاستخدامه :-). يمكنني أيضًا استخدام رابط لصفحة تشرح وقت استخدام أي واحد من هذه.

هل كانت مفيدة؟

المحلول

جرب هذا:

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

نصائح أخرى

يعمل بالنسبة لي:

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

هذه هي الطريقة التي سيبدو بها رمز 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>

فيما يلي الفول (xbean) الذي تستخدم قائمته في 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
}

الآن يمكنك ببساطة أن يكون لديك حقل lstbean مع المستوطنين في الإجراء الخاص بك (SaveAction) و Hey لقد انتهيت.

بالنسبة للدعامات 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 على البلد الحالي ، الذي دفعه إلى هناك بواسطة التكرار الخارجي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top