zybzhen 2008-11-10 15:42
浏览 224
已采纳

这段struts1的功能,在struts2中如何实现jsp tag?

这是我的struts1中的代码
public class ValidateSessionTag extends BodyTagSupport {
/**
*
*/
private static final long serialVersionUID = 1L;

public int doEndTag() throws JspException {

    boolean valid = false;
    HttpSession session = pageContext.getSession();
    if ((session != null) && (session.getAttribute(Constant.SESSION_USER_KEY) != null))
        valid = true;

    if (valid)
        return (EVAL_PAGE);
    else {
        try {
            ServletRequest request=pageContext.getRequest();
            ServletResponse response=pageContext.getResponse();
            RequestDispatcher requestDispatcher=request.getRequestDispatcher("/index.jsp");
            requestDispatcher.forward(request, response);
        } catch (Exception e) {
        throw new JspException(e.toString());
        }
        return (SKIP_PAGE);
    }
 }   

}
在struts2中使的时候报告一个错误load tag handler class "com.hxq.taglibs.ValidateSessionTag" for tag "hxq:validateSession"
我在web-inf下建立了hxq.tld,并且已经引用。
struts2 是不是使用不了 jsp自定义标签啊。
请问哥姐,我该如何在struts2中实现 这个功能啊。

[b]问题补充:[/b]
我这个代码是做session验证的。
做session验证 用拦截器 我倒是会用,也会写。
我还有一代码是做权限验证的。
是在jsp显示的时候 验证一下是否有权限,如果没有权限就不在jsp上显示。
public class ValidatePermissionTag extends BodyTagSupport {
private static final long serialVersionUID = 1L;
private String permission;//设定的访问权限
private String include="3";//(1)是包含该属性就可以了,(2)是除了最后一项匹配以外都要匹配,(3)必须完全匹配

private String flag="true";//是否匹配显示还是不匹配显示
public void setPermission(String permission){
this.permission=permission;

}
public void setInclude(String include){
this.include=include;
}
public void setFlag(String flag){
this.flag=flag;
}
public int doStartTag() throws JspException {
int status=SKIP_BODY;

HttpSession session = pageContext.getSession();
if ((session != null) && (session.getAttribute(Constant.SESSION_USER_PERMISSION) != null)){
ArrayList list=(ArrayList)session.getAttribute(Constant.SESSION_USER_PERMISSION);
Iterator iterator=list.iterator();
while(iterator.hasNext()){
String ops=iterator.next().toString();//实际拥有的权限
if("true".equals(flag)){
if("1".equals(include)){

if(ops.indexOf(permission)>0){
return EVAL_BODY_INCLUDE;
}
}else if("2".equals(include)){
if(ops.startsWith(permission)){
return EVAL_BODY_INCLUDE;
}
}else{
if(ops.equals(permission)){
return EVAL_BODY_INCLUDE;
}
}
}else{
if("1".equals(include)){

if(ops.indexOf(permission)>0){
return SKIP_BODY;
}
}else if("2".equals(include)){
if(ops.startsWith(permission)){
return SKIP_BODY;
}
}else{
if(ops.equals(permission)){
return SKIP_BODY;
}
}
status=EVAL_BODY_INCLUDE;
}
}
}

return status;
}
}

我的这两段代码在另外一struts1的工程中 都是好使的。
我现在正在学习struts2,并且 想把原来struts1的工程用struts2重新实现。

  • 写回答

2条回答 默认 最新

  • iteye_14081 2008-11-10 15:48
    关注

    自定义的jsp tag跟web框架没有关系,也就是跟你用struts1和struts2没有关系,用法都是一样的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置