首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC的视图组件。我应该在控制器中为视图预先生成HTML标记元素吗?

问MVC的视图组件。我应该在控制器中为视图预先生成HTML标记元素吗?
EN

Stack Overflow用户
提问于 2013-05-29 19:22:30
回答 1查看 196关注 0票数 0

我目前正在用Struts2创建一个MVC Java Web App。

我的应用程序的一个元素是通过表单搜索一些结果。当用户提交表单时,Action从数据库获取所需的值并填充Map:

代码语言:javascript
复制
Map<Integer,List<String>> values = new HashMap<Integer,List<String>>();

它具有每一行的列值列表。

通过遵循这种方法,我可以使用通用JSP来显示任何结果框的结果:

代码语言:javascript
复制
<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>

​

我现在觉得这是一个糟糕的方法。相反,我应该将映射更改为ResultBoxRow对象列表。每个ResultBox都有自己的View Jsp,而不是一个通用的,这样我就可以遍历对象并输出,例如:

代码语言:javascript
复制
<s:iterator value="value">
<td><s:property name="firstname" /></td>
<td><s:property name="lastname" /></td>

等。

在表头的情况下,我可能需要为某些头赋予单独的样式属性。我认为这些应该在JSP本身中定义,而不是让JSP引用控制器中包含该标头的样式的值。

我想我的总体问题是控制器应该在多大程度上控制视图元素的样式/显示?我觉得它应该只生成在标签中显示的单个元素,而不是要放在行的"style“标签中的值。即使这样做牺牲了一个简单的JSP来处理每个结果框。

如果能得到你的意见,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2013-05-29 20:58:06

控制器应该与显示机制无关:这就是MVC的意义所在,将数据与其表示完全分离。

你仍然可以通过自定义标签、包含、模板等来干燥视图层。样式可以作为属性传递,而底层的DOM将由单个页面或模板创建。

你想要传递的属性的性质也很重要。如果它们是语义的,那么在逻辑上可以从模型或控制器中获得。如果它们纯粹是表现性的,比如颜色、宽度等,那么它与模型或控制器没有任何关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16812563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档