我对JSP标记有疑问 - 如何在Java代码中插入属性值? 这是我的代码:
<%!
String ii = new String();
%>
<%
try {
String id = request.getParameter("a");
int i = Integer.valueOf(id);
ii = String.valueOf(i);
} catch (Exception e) {
response.sendError(500);
}
%>
<div style="float:right;margin-right:20px;">
<strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br>
</div>
如果我运行它,会发生错误500 - stack 第48行是这段代码:
<strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br>
我正在使用Struts 1和带有自己标签的JSP(是我的标签)。
答案 0 :(得分:6)
听起来你需要更改你的tld,以便属性可以接受表达式:
<attribute>
...
<rtexprvalue>true</rtexprvalue>
...
</attribute>
答案 1 :(得分:1)
通常会对这个JSP提供一些反馈。
你意识到变量“ii”不是线程安全的吗? ii是一个类变量。 只创建一个servlet实例,并通过它运行多个线程。 因此,您可能会有多个线程编辑此值并打印出不一致的结果。
解决方案:将其声明为&lt;%scriptlet%&gt;中服务方法的局部变量标签而不是&lt;%!声明%&gt;
只是想知道这段代码有什么意义?将参数转换为数字然后再返回?这是验证的一些尝试吗?对我来说,似乎有很多令人困惑的不必要的工作。特别是把它变成一个字符串。 如果它必须是一个整数,为什么你的标记不是一个整数? 或者自己进行验证?