关于Velocity访问javabean传参问题,求教!!!

村干部 发布于 2013/03/05 07:02
阅读 1K+
收藏 0

ToyTool.java 类

public class ToyTool {

	private String message = "Hello from ToyTool!";  
	  
    public String getMessage()  
    {  System.out.println("===========================================");
        return message;  
    }  
  
    public void setMessage(String m)  
    {  
        message = m;  
    }
    
    public void report(HttpServletRequest req){
    	System.out.println("=========================");
    	
    	System.out.println("===:"+req.getRequestURI());
    }
    
    public void reqs(String value){
    	System.out.println("=====调用成功了===="+value);
    }
  
    /** To test exception handling in templates. */  
    public boolean whine() {  
        throw new IllegalArgumentException();  
    }  
}
tools.xml 文件配置


<tools> 
    <data type="boolean" key="xhtml" value="true"/>  
    <data type="boolean" key="isSimple" value="true"/>  
    <data type="number" key="version" value="2.0"/>  
    <data key="foo">this is foo</data>  
    <data key="bar">this is bar.</data>
    <toolbox scope="request">
        <tool class="org.apache.velocity.tools.view.ViewContextTool"/>
        <tool class="org.apache.velocity.tools.generic.ResourceTool"/>
        <tool key="toytool" class="com.sps2h.view.ToyTool"/>
    </toolbox>
    <toolbox scope="session" locale="en_US">
    	<tool class="org.apache.velocity.tools.view.BrowserTool" languagesFilter="en"/>
    </toolbox>
    <toolbox scope="application">
    	<tool key="math" class="org.apache.velocity.tools.generic.MathTool"></tool>
    	<tool key="date" class="org.apache.velocity.tools.generic.DateTool"></tool>
    </toolbox>
</tools>
index.vm模板文件


<html>  
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<body>  
<br />
request value :$request.get("parameters").get("test")
<br />
$toytool.report($request) ##这个函数就调用不到
$toytool.reqs("===SUCCESS==") ##这个就可以正常调用
<br />
  
</body>  
</html>  


$toytool.report($request) ##这个函数就调用不到

信息:  Velocity  [debug] Null reference [template '/index.vm', line 7, column 1] : $toytool.report($request) cannot be resolved.


加载中
0
TrulyBelieve
TrulyBelieve

改成这样试试呐?(没用过,猜滴)

public void report(Object req)

TrulyBelieve
TrulyBelieve
回复 @村干部 : 看来没法传递对象引用,${request},相当于${request}.toString() 记得velocity只处理字符串滴。
村干部
村干部
呵呵 可以调用,但是不能这样用,有问题
村干部
村干部
System.out.println("===:"+req);结果是null $toytool.report(${request}) 这样调用不了的原因就是${request}作参数这样传的时候就null。 我在.vm上面输出${request}都是有值的!
村干部
村干部
这样可以调用,但是System.out.println("===:"+req);
返回顶部
顶部