Struts2.0--S:URL标签 请求参数

Posted on 2008-01-11 16:02 puras 阅读(9117) 评论(3)  编辑  收藏 所属分类: Struts2.0

在Struts2.0.11之前,一些页面的标签,我还是比较喜欢使用JSTL, 比如说:c:url,类似的,因为Struts里提供的一些标签,虽然也能完成相应的功能,而且有些功能还更加的强大,但是不如JSTL的用起来方便.但是从Struts2.0.11开始,已经不再支持EL语言了,使我开始转向使用Struts2.0的标签了...

有的时候,我们需要在页面内标识一个资源,但是使用相对路径有时会引起错误,使用Struts的URL标签可以让我们直接使用绝对路径(以前一直用c:url来着.这里的绝对路径,也是相对于WEBAPP的根目录的), 比如,引用一张位于/webapp/images/下的图片test.png.使用URL标签则为:

<s:url value="/images/test.png" />

这么用其实已经很方便了,但是有的时候会出现一点点小问题,说是问题,原因也是因为自己操作的问题,呵.

比如写JS中,两个参数,一个是图片的位置,一个是图片名称.可能写的时候就要分开写,这个时候如果URL上跟有请求参数,而还用上面的URL标签,就会出现问题.因为URL标签会自动的将URL上的请求参数加到你的URL标签的Value后面.这样上面的图片的位置可能就不是你想要的位置了.

解决办法:

在上面的标签中添加一个属性:

<s:url value="/images/test.png" includeParam="none" />

如果想让所有的URL标签都不要自动的添加URL的请求参数,可以通过配置Struts.xml文件来解决这个问题.

在Struts.xml文件中添加下面一行,将s:url的默认行为修改一下:

<constant name="struts.url.includeParams" value="none" />

这样,就不用在每个标签上都写includeParam属性了,不过在需要请求的参数的时候,就得需要自己来手动添加这个属性了.

includeParam提供了三个选项:none, get or all

PS:发现废话越来越多了,呃....啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Feedback

# re: Struts2.0--S:URL标签 请求参数  回复  更多评论   

2008-05-07 20:08 by Nettree
有一个问题想请教,我把菜单的路径做成表存在数据库中,我在登录Action中读取出了登录用户相应的权限菜单并封装在List中,问题是,在页面中,我用迭代读取每一个相应的menu对象,现在我想把<s:url value="<s:property value="menu.menuurl">">,报异常说少一个等号,怎么把我在Action中的属性用于生成url,从而简单的实现动态生成菜单的功能?谢谢.

# re: Struts2.0--S:URL标签 请求参数[未登录]  回复  更多评论   

2008-08-06 13:01 by Puras
可以使用使用%{}
在你说的问题里就是<s:url value="%{menu.menuurl}">

# re: Struts2.0--S:URL标签 请求参数  回复  更多评论   

2009-05-13 15:35 by zlfoxy
从Struts2.0.11开始,已经不再支持EL语言了?

不是吧?el跟Struts又没有冲突。

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 47, comments - 124, trackbacks - 0, articles - 0

Copyright © puras