精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-12-23
robbin 写道 webwork2.2的freemarker的tag支持是内置的,你试试去掉那行jsptag的macro引用声明。
![]() 我把WEB.xml里的: <servlet> <servlet-name>freemarker</servlet-name> <servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class> <!-- FreemarkerServlet settings: --> <init-param> <param-name>TemplatePath</param-name> <param-value>/</param-value> </init-param> <init-param> <param-name>NoCache</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>ContentType</param-name> <param-value>text/html</param-value> </init-param> <init-param> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>number_format</param-name> <param-value>0.##########</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> 去掉了,之后重新拷贝配置文件启动服务,仍然出错。之后我又把login.ftl的 <#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] /> 去掉了并把xwork.xml改为: <action name="login" class="login"> <result name="success">success.htm</result> <result name="input" type="freemarker">/test/login.ftl</result> <interceptor-ref name="defaultStack"/> </action> 再启动就好了。 你刚说的那个WW不推荐使用的方式是不是以后都只能像现在这样做了?还有别的方式吗?(除了直接使用FreeMaker之外) |
|
返回顶楼 | |
发表时间:2005-12-23
真是奇怪。我的login.ftl是这样的:
<html> <head> <title>登陆</title> </head> <body> <@ww.form action="login" method="POST"> <@ww.textfield label="用户名" name="loginId"/> <@ww.password label="密码" name="password"/> <@ww.submit value="登陆"/> </@ww.form> </body> </html> 访问的时候生成的HTML源码是: <html> <head> <title>登陆</title> </head> <body> <form id="login" name="login" action="/learningtracker/test/login.action" method="POST"> <input type="text" name="loginId" value="" id="login_loginId"/><input type="password" name="password" id="login_password"/><input type="submit" value="登陆"/></form> </body> </html> 给我表单的名字都+了一个“login_”。我的ActionJAVA类是这样写的: /** 用户登录Id */ private String loginId; /** 登录密码 */ private String password; public String getLoginId(); { return loginId; } public void setLoginId(String loginId); { this.loginId = loginId; } public String getPassword(); { return password; } public void setPassword(String password); { this.password = password; } public String execute(); { UserInfo userDB = this.getUserManager();.getUserByLoginId(loginId);; if(userDB.getPassword();.equalsIgnoreCase(this.password););{ return "success"; }else{ return "error"; } } 按说这个生成的HTML提交后应该在Action对应的是login_loginId和login_password,可是现在我里面是loginId和password,竟然没有出错?!而且只要我密码输入正确就提示我登陆成功?!怎么会这样?怎么可能把login_loginId的值赋予loginId,login_password的值赋予password? |
|
返回顶楼 | |
发表时间:2005-12-24
ww2b4中
如果去掉那行jsptag的macro引用声明, 前提是使用 0webwork设置正确 1把ftl设置为某action的input 2actionname!input.action来访问ftl 这样就可以用webwork的内建机制来处理freemarker的tag支持。 如果直接通过url访问ftl,就必须使用引用声明。 |
|
返回顶楼 | |
发表时间:2005-12-29
zzsczz 写道 ww2b4中
如果去掉那行jsptag的macro引用声明, 前提是使用 0webwork设置正确 1把ftl设置为某action的input 2actionname!input.action来访问ftl 这样就可以用webwork的内建机制来处理freemarker的tag支持。 如果直接通过url访问ftl,就必须使用引用声明。 去掉那行jsptag的macro引用声明,你所说的1、2两点不是必需的。这点我已经验证,看以下Code: <action name="listGroup" class="listGroup"> <result name="ok" type="freemarker">/test/listGroup.ftl</result> <interceptor-ref name="defaultStack"/> </action> public String execute(); { List allUserGroup = this.getUserGroupManager();.getAllGroups();; this.getRequest();.setAttribute("allUserGroup",allUserGroup);; return "ok"; } <html> <head> <title>All UserGroups</title> </head> <body> <table> <tr> <th>ID</th> <th>Name</th> </tr> <#list allUserGroup as Group> <tr> <td>${Group.identifier}</td> <td>${Group.name}</td> </tr> </#list> </table> </body> </html> 结果是正确的。 |
|
返回顶楼 | |
发表时间:2006-01-02
ftl用ww的filter解析的话,要使用taglib,需要在web.xml加上这一段
<servlet> <servlet-name>JspSupportServlet</servlet-name> <servlet-class>com.opensymphony.webwork.views.JspSupportServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> 这是为了让view支持servlet模式,ww2.2的FreemarkerManager,VelocityResult,WebWorkPortlet都用到这个类 |
|
返回顶楼 | |