今天在写一个页面时,有很多地方都要用到这个页面,但是传递的参数不同。也就是其他页面通过传递不同的参数转到这个页面。
比如:有几个页面通过语句"${pageContext.request.contextPath}/song/toQuerySongForChoose.do"+para跳转到同一个页面querySongForChoose.jsp,但是传递的参数不同。
有的只需要传递一个参数,有的两个,有的多个。
para=”?dirId=1"
para="?dirId=0&serialTeamId=9&serialTeamName=KK_SERIAL_1
刚开始的时候,我在jsp页面中把所有的参数提取出来。
var dirId=${param.dirId}
var serialTeamId=${param.serialTeamId}
var serialTeamName=${param.serialTeamName}
当我做的时候,第二行的para跳转过去没有问题,但是第一个para跳转过去就出现了问题。我查了下错误提示。说缺少对象。
后来我试着把serialTeamId和serialTeamName删除。就正常了。但是,这两个值没法传过去。所以我在想,是不是在转到jsp页面时,会先加载param参数的值,如果碰到null值就会抛出异常。后来想了一个办法,把serialTeamId和serialTeamName放到一个判断语句里。
var dirId=${param.dirId}
if(dirId=='0'){
var serialTeamId=${param.serialTeamId}
var serialTeamName=${param.serialTeamName}
}
经测试还是不行。看来在加载jsp时,优先读取param值,而不受js条件语句的约束。既然不受js条件的约束,那受不受jstl条件的约速了。
<input type="hidden" name="serialTeamId" id="serialTeamId" value=<c:if test='${not empty param.serialTeamId}'>${param.serialTeamId }</c:if>>
< input type="hidden" name="serialTeamName" id="serialTeamName" value=<c:if test='${not empty param.serialTeamName}'>${param.serialTeamName }</c:if>>
经测试,可以通过。
原文地址:http://blog.csdn.net/iamstudyingjava/article/details/6978019