ognl标签里面有个url标签,该标签和jstl的url标签功能差不多。

不过ognl这个更方便。

value值代表生成的url地址,var是个临时变量

<s:url value="/demo" var="url1"></s:url>

使用el表达式把该值打印出来。

${url1}

结果显示。

/struts/demo

这里的struts代表项目名,/demo就是上面的value值。

这个是一个最简单的演示。

第二个:

<s:url value="/demo" var="url2">
    <s:param name="user" value="'user'"></s:param>
</s:url>

使用EL打印出来的结果 ${url2}

/struts/demo?user=user

生成了一个get方式的请求参数。

上面的值是全部打印出来了 ,再看下面这个 ,开始和上面有点不同了。

<s:url value="/demo" var="url2">
    <s:param name="user" value="user"></s:param>
</s:url>

使用EL打印出来的结果 ${url2}

/struts/demo

这个结果为什么会是这样呢?基本和上面的方式一样,为什么上面能显示出来,下面的显示不出来?

这个就是struts2的ongl标签强制将该字符串(user)转成对象属性,查看对象属性有没有这个属性。它把这个当成一个变量来执行了,但是栈里面没有这个值,当然也就打印不出来了。

如果想要将user这个值不让ognl解析成属性,直接在上面加个单引号,它就不会解析了,如果value值里面是个数字的话,就不需要写单引号了。

第三个:

使用action动作生成url

<s:url action="demo" namespace="/default" method="save" var="url3"></s:url>

/struts/default/demo!save.action

struts是项目名 default是namespace名称 demo是action名称 save是方法

------------------------------------------------------------------

还有 includeParams 属性 这个后面再写。