在开发JSP时,经常用到像test.jsp?param1=value1¶m2=value2¶m3=value3这样的链接。通常我们可能这样做:
<a href="test.jsp?param1=<%=value1%>¶m2=<%=value2%>¶m3=<%=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=&pre_SendDate=&pre_FillBillDate=&receiveDept=&suf_SendDate=&suf_FillBillDate=&roadbillId=&status=1201">dsfasfa</a>
这里的receiveDeptName,pre_SendDate等都是从form里去定义的。当它有值时输出如status=1201,如果没有值就为空。
后记:
在这里,我没有限制自己必须使用标记库,也没有明确的告诉自己该怎样去写JSP页面,反正我觉得,该怎么方便就怎么用。