现在的位置: 首页 > 综合 > 正文

用html:link传递多个参数

2013年11月29日 ⁄ 综合 ⁄ 共 1211字 ⁄ 字号 评论关闭

在开发JSP时,经常用到像test.jsp?param1=value1&param2=value2&param3=value3这样的链接。通常我们可能这样做:

<a href="test.jsp?param1=<%=value1%>&param2=<%=value2%>&param3=<%=value3%>">link</a>

当只有一两个参数时,这倒成不了问题,但当有十个以上的参数要传递时(有时这是不可避免的)就不同了,而且容易出错,虽然调试起来很方便就知道有没有错了,但谁也不会愿意在这个地方耗费精力的。即使是那么一点。

那么在Struts中又是怎样呢?

当然,你可以像上面提到的那样去做,没有问题。但是否有更好的方法?的确是有的。从<html:link>的定义我知道,它允许我放入一个HashMap,因为我用的是动态FORM,我试着这样做

<%
java.util.HashMap newValues = (HashMap)(( org.apache.struts.validator.DynaValidatorForm)request.getAttribute("searchRoadbill")).getMap();
%>

这使我得到一个HashMap,也许还有更好的方法取得它,但我用了一个我最快想到的方法。然后该做什么呢?

嘻嘻,把它放到页作用域中去

pageContext.setAttribute("links",newValues);

最后:

<html:link href="afaa.jsp" name="links">dsfasfa</html:link>

这样,就生成一个这样的连接:

<a href="afaa.jsp?receiveDeptName=&amp;pre_SendDate=&amp;pre_FillBillDate=&amp;receiveDept=&amp;suf_SendDate=&amp;suf_FillBillDate=&amp;roadbillId=&amp;status=1201">dsfasfa</a>

这里的receiveDeptName,pre_SendDate等都是从form里去定义的。当它有值时输出如status=1201,如果没有值就为空。

http://localhost:7001/transit/afaa.jsp?receiveDeptName=&pre_SendDate=&pre_FillBillDate=&receiveDept=&suf_SendDate=&suf_FillBillDate=&roadbillId=&status=1201

后记:

在这里,我没有限制自己必须使用标记库,也没有明确的告诉自己该怎样去写JSP页面,反正我觉得,该怎么方便就怎么用。

资源:http://struts.apache.org/userGuide/struts-html.html#link

抱歉!评论已关闭.