本人对MVC接触不久,对于控制器层控制返回特定的视图界面这个概念一直很模糊,个人使用MVC的时候有个习惯,就是喜欢将视图界面的代码直接封装在一个函数里,然后作为视图的一部分直接插入到控制器返回的视图中去
1.界面生成函数(HTMLTool.java) public class HTMLTool{ /* userinfoHTML方法直接将传进的数据结构封装成具体的视图代码 **/ public static String userinfoHTML(User user){ return "<ul><li>姓名:"+user.getusername()+"</li><li>性别:"+user.getSex()"+</li><li>年龄:"+user.getAge() +"</li></ul>"; } }
2.Action类(Action.java) public class Action{ public String userinfoHTML ; public String getUserinfoHTML(){return userinfoHTML ;} public String setUserinfoHTML(String userinfoHTML){this.userinfoHTML=userinfoHTML;} public String execute(){ User user = new User("浮云","男",20) ;//此处省略了从数据模型层获取数据的过程 setUserinfoHTML(HTMLTOOL.userinfoHTML(user)) ;//直接从界面生成函数中获取完整的视图代码块 } }
3.具体视图(view.jsp) <body> <h2>用户信息</h2> <s:property value="userinfoHTML" escape="false" /> /*把控制器返回的已经包装好的HTML代码直接插入进来*/ </body>
一直苦恼的是,这样的实现是不是有些不合适?