在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:发现废话越来越多了,呃....啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~