gpt4 book ai didi

jSTL - 如何在jSTL代码中混合href

转载 作者:行者123 更新时间:2023-12-03 18:11:14 24 4
gpt4 key购买 nike

当我使用下面的 jSTL 代码时

  <a href="http://mysite.com?id="<c:out value="${myid}"/>/><c:out value="${myid}"/></a> 

输出是:

“1234”

值1234对应myid的变量值但是生成的url是
http://mysite.com?id= ” 所以 myid 没有生成值作为 href 的一部分。

如何修改 href 以显示整个 href :

" http://mysite.com?id=1234 "

代替 :

" http://mysite.com?id= "

最佳答案

最终,JSP/JSTL 生成 HTML。您熟悉的basic HTML , 对?

通过右键单击,在浏览器中查看源代码,仔细查看生成的 HTML 输出。你会看到的:

<a href="http://mysite.com?id="1234/>1234</a> 

是吗 valid HTML?不,您使用 " 过早地关闭了属性值在错误的地方,你用 /> 过早地关闭了标签.看,Stack Overflow HTML 语法荧光笔也被搞糊涂了。相反,它应该是:
<a href="http://mysite.com?id=1234">1234</a> 

相应地修复 HTML 生成器(即 JSP/JSTL 代码),以便它生成所需的 HTML:
<a href="http://mysite.com?id=<c:out value="${myid}"/>"><c:out value="${myid}"/></a> 

无关 到具体问题, <c:out>仅有助于预防 XSS attack holes当重新显示用户控制的输入时,实际上是错误的内联 URL 参数的工具。如果你能保证 ${myid}始终是一个数字(因为它是 LongInteger ),您甚至可以完全不使用它,使代码更易于阅读:
<a href="http://mysite.com?id=${myid}">${myid}</a> 

如果 ${myid}然而,不能保证是一个数字(因为它是一个 String ),那么你应该使用 <c:url><c:param>正确 URL-encode它:
<c:url value="http://mysite.com" var="myURL">
<c:param name="id" value="${myid}" />
</c:url>
<a href="${myURL}"><c:out value="${myid}" /></a>

关于jSTL - 如何在jSTL代码中混合href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18084905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com