论坛首页 Java企业应用论坛

关于WebWork2.2B4使用FreeMaker的问题!

浏览 11245 次
精华帖 (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之外)
0 请登录后投票
   发表时间: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?
0 请登录后投票
   发表时间:2005-12-24  
ww2b4中
如果去掉那行jsptag的macro引用声明,
前提是使用 
0webwork设置正确
1把ftl设置为某action的input
2actionname!input.action来访问ftl

这样就可以用webwork的内建机制来处理freemarker的tag支持。



如果直接通过url访问ftl,就必须使用引用声明。
0 请登录后投票
   发表时间: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>


结果是正确的。
0 请登录后投票
   发表时间: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都用到这个类
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics