الدعامات 2 أعشاش التكرار
سؤال
لا أستطيع أن أصدق كيف يمكن أن يبدو هذا الشيء البسيط صعبًا للغاية في الدعامات 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 على البلد الحالي ، الذي دفعه إلى هناك بواسطة التكرار الخارجي.