我目前正在使用 Struts2 创建一个 MVC Java Web 应用程序。
我的应用程序的一个元素是通过表单搜索一些结果。当用户提交表单时,Action 从数据库中获取必要的值并填充 Map:
Map<Integer,List<String>> values = new HashMap<Integer,List<String>>();
其中有每行的列值列表。
通过遵循这种方法,我可以使用通用 JSP 来显示任何结果框的结果:
<s:div cssClass='resultContainer'
cssStyle=' min-height: 150px; max-height:%{header}px; overflow: auto; %{display}; '
theme="qxhtml">
<table id='resultTable'>
<tr id='tableHeader'>
<s:iterator value="headers">
<th><s:property /></th>
</s:iterator>
</tr>
<s:iterator value="values">
<tr class='results'>
<s:iterator value="value">
<td><s:property escape="false" /></td>
</s:iterator>
</tr>
</s:iterator>
</table>
我现在觉得这是一个不好的方法。相反,我应该将 Map 更改为 ResultBoxRow 对象列表。每个 ResultBox 都有自己的 View Jsp,而不是一个通用的,允许我迭代对象并输出,例如:
<s:iterator value="value">
<td><s:property name="firstname" /></td>
<td><s:property name="lastname" /></td>
等等
在表格标题的情况下,我可能需要为某些标题提供单独的样式属性。我觉得这些应该在 JSP 本身中定义,而不是让 JSP 从包含该标题样式的控制器中引用一个值。
我认为我的总体问题是控制器应该在多大程度上控制视图元素的样式/显示?我觉得它应该只生成标签中显示的单个元素,而不是例如放入行的“样式”标签中的值。即使这确实牺牲了一个简单的 JSP 来处理每个结果框。
很高兴得到你的意见。