Struts2自定义标签

markzwei 2011-04-11 03:10:37
我想用Struts2的自定义标签实现根据不同的权限分别对jsp中的字段进行控制,主要是3中方式,如:数据库中此角色对此字段可能有1:可编辑2:只读3:不显示。现在是在jsp中用java代码判断,这样太费劲了,而且页面也不统一,做过的请回复。
...全文
257 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlotus_lyn 2011-04-11
  • 打赏
  • 举报
回复
可以使用struts2

<s:component />标签进行自定义标签。

支持jsp,freemarker, velocity三种模板。
markzwei 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 amos1989 的回复:]
比如:

HTML code

.......
......
<td>
<t:auth authName="isEditePromised">
<a href="xxxxx">编辑</a>
</t:auth>
<a href="xxxxx">删除</a>
</td>
[/Quote]
自定义标签肯定是写一遍啊,包起来就行,上面说的是用<s:if判断,自定义标签只能控制可见性?查查资料
amos1989 2011-04-11
  • 打赏
  • 举报
回复
本质还是用java写,就是说把公共代码提取出来,做成一个标签,减少代码量,重构手法,算得上是。。
amos1989 2011-04-11
  • 打赏
  • 举报
回复

比如:


.......
......
<td>
<t:auth authName="isEditePromised">
<a href="xxxxx">编辑</a>
</t:auth>
<a href="xxxxx">删除</a>
</td>

amos1989 2011-04-11
  • 打赏
  • 举报
回复
怎么会要写三遍列???/

另外像这种标签,只能是在页面上控制可见性, 你在后台还是要控制权限。。。以防别人直接在url栏上输地址访问。。
markzwei 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 amos1989 的回复:]

至于如何在配置标签,我想这个不用说吧。

如何应用?? 在你需要的检查的链接,按钮等处,用这个标签包起来,并加上authName属性

就可以了,这个仅仅是一个范例。。。 逻辑自己根据需要去完善
[/Quote]
这不是和用java判断一样吗,一个字段要写三遍,太费劲了 呵呵
markzwei 2011-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 amos1989 的回复:]

跟strutst2没关系吧。。

自定义标签是属于jsp servlet这快的东西。

给个简单的例子。。

Java code

public class AuthTag extends BodyTagSupport {

/**
*
*/
private static final long serialVersionUID = 1L;
……
[/Quote]
你说的很对,我说了3种权限,整个tr可以控制显示或不显示,但tr中的字段怎样控制编辑或不可编辑呢?
oO临时工Oo 2011-04-11
  • 打赏
  • 举报
回复
这种东西为什么要用到View上去呢,建议在Service中控制,就不要用标签了.

按楼主的想法:可以把权限码放到Session中,比如

//Java
session.setAttribute("right",1);

//JSP
//<c:if></c:if>是JSTL
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
//.....more code
//如果有权限码为1的权限
<c:if test="${right==1}">
//do something
</c:if>

redlotus_lyn 2011-04-11
  • 打赏
  • 举报
回复
使用<s:if />判断不行吗?

<s:if test="%{ctrl == 1}">
可编辑
</s:if>
<s:elseif test="%{ctrl == 2}">
只读
</s:elseif>
<s:else>
不显示
</s:else>
amos1989 2011-04-11
  • 打赏
  • 举报
回复
至于如何在配置标签,我想这个不用说吧。

如何应用?? 在你需要的检查的链接,按钮等处,用这个标签包起来,并加上authName属性

就可以了,这个仅仅是一个范例。。。 逻辑自己根据需要去完善
amos1989 2011-04-11
  • 打赏
  • 举报
回复
跟strutst2没关系吧。。

自定义标签是属于jsp servlet这快的东西。

给个简单的例子。。


public class AuthTag extends BodyTagSupport {

/**
*
*/
private static final long serialVersionUID = 1L;

private String authName;





@Override
public int doStartTag() throws JspException {
HttpSession session = pageContext.getSession();
//获取权限
List<String> authList = (List<String>) session.getAttribute(CommonConstants.USER_AUTH_KEY);
if( null == authList || !authList.contains(authName)){
return SKIP_BODY;
}
return EVAL_BODY_INCLUDE;
}

public String getAuthName() {
return authName;
}

public void setAuthName(String authName) {
this.authName = authName;
}



}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧