想用JSP中的自定义函数写个方法,大致上是这样写:
public static String myRequest(String param){
  //获取request请求过来的参数值
}
使用为:${fn:myRequest(id)},意思就是获取请求地址中的id的值,但是在myRequest方法中如何到request对象呢,请教各位大侠,不胜感激。注:希望别出现没有必要之类的话语,小弟只想了解了解这方面的知识了。

解决方案 »

  1.   

    第一,el是从4个作用域中从小到大获取值,在该作用域中找到则退出,没找到则继续下一个作用域
    第二,就是反射机制了,
    第三,我看你的写法不像是一个el自定义函数呢
      

  2.   

    public static String getPicSrc(javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response) throws IOException{

    String fliename=TestJfreechart.createBarChart(request.getSession(),response.getWriter());

    String url=request.getContextPath()+"/servlet/DisplayChart?filename="+fliename;
    return url;
    }
    下面是tld
    <function>
    <name>getPicSrc</name>
    <function-class>testservlet.Users</function-class>
    <function-signature>java.lang.String getPicSrc(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)</function-signature>
    </function>自己看看
      

  3.   

    我也是5楼的思路,只不过在JSP页面调用的时候,可以直接用${fn:myRequest(request)},这里的HttpServletRequest参数可以直接用request传递吗?
      

  4.   

    我觉得4楼朋友说的el表达式,跟我说的el自定义函数不是1个事情
    ${user}默认是从pageContext返回开始往大的范围找,而el的自定义函数就是专门处理user的值的。
      

  5.   

    我知道怎么做了,但是request、session、pagecontext必须通过参数传递过去,因为在普通的方法中是没法获取request等对象的,
    页面调用方法为:
    ${fn:myRequest(pageContext)}
    说明:pageContext对象为JSP内置对象,可以在el表达式中直接使用,如果这里需要获取request对象,可以这样写${fn:myRequest(pageContext.request)}
      

  6.   


    在jsp中 调用时候
     <img src="${user:getPicSrc(pageContext.request,pageContext.response)}">
    <%@ taglib prefix="user"     uri="http://careers.com/users"%> 
    上面 还得引用过来