プロジェクト名、タスク、および毎日の請求時間を表示する時間追跡ページを作成しようとしています。
Java側にあるオブジェクトは次のとおりです。
ProjectTO project1 = new ProjectTO();
project1.setProjectName("Project ABC");
TreeMap tasks = new TreeMap();
tasks.put("100_t1", "Requirement");
tasks.put("100_t2", "Development");
project1.setTasks(tasks);
TreeMap hours = new TreeMap();
hours.put("100_t1:Mon", "8");
hours.put("100_t1:Wed", "7");
project1.setHours(hours);
画面に値を表示するには、このオブジェクトを調べる必要があります。JSPページにあるものは次のとおりです。
<s:iterator value="activeProjects">
<tbody>
<tr>
<td><p><s:property value="projectName"/></p></td>
</tr>
<s:iterator value="tasks">
<tr>
<td><s:property value="value"/></td>
<td><s:property value="hours[%{key+':Mon'}]"/></td>
<td><s:property value="hours[%{key+':Tue'}]"/></td>
..........
</tr>
</s:iterator>
</tbody>
</s:iterator>
問題は、時間を表示する方法を考え出すことです。上記のコード スニペットは機能しません。<s:set var="mon" value="%{key+':Mon'}">
td タグ (hours[#mon]) で使用および参照することで、機能させることができます。
より良い解決策はありますか?
編集:
ありがとうデイブ。あなたが正しいです。を探していhours["100_t1:Mon"]
ます。
ビューレイヤーでオブジェクトを反復処理する場合、反復処理するタスク行のキーに基づいて「100_t1」を動的に挿入する必要があります。「月」、「火」はハードコーディングできます。
あなたが推奨したように、ビューレイヤーの外でこれをよりうまく行うことができるかどうかを確認します. 今のところ、これは私が私のために働いているものです。
<s:iterator value="activeProjects">
<tbody>
<tr>
<td><p><s:property value="projectName"/></p></td>
</tr>
<s:iterator value="tasks">
<s:set var="mon" value="%{key+':Mon'}"/>
<s:set var="tue" value="%{key+':Tue'}"/>
<s:set var="wed" value="%{key+':Wed'}"/>
<s:set var="thu" value="%{key+':Thu'}"/>
<s:set var="fri" value="%{key+':Fri'}"/>
<s:set var="sat" value="%{key+':Sat'}"/>
<s:set var="sun" value="%{key+':Sun'}"/>
<tr>
<td><s:property value="value"/></td>
<td><s:property value="hours[#mon]"/></td>
<td><s:property value="hours[#tue]"/></td>
<td><s:property value="hours[#wed]"/></td>
<td><s:property value="hours[#thu]"/></td>
<td><s:property value="hours[#fri]"/></td>
<td><s:property value="hours[#sat]"/></td>
<td><s:property value="hours[#sun]"/></td>
</tr>
</s:iterator>
</s:iterator>
最終編集:
次のステートメントは、s:set タグを使用する必要をなくすのに役立ちます。hours[key + ':Mon']
で囲うべきだっ%{}
た。
value="%{hours[key + ':Mon']}"/>
また、これも機能します
value="hours[key + ':Wed']"