【发布时间】:2009-12-02 13:52:29
【问题描述】:
您好,我遇到了设置属性标签无法正常工作的问题。我有一个 jsp,我将它作为 portlet 包含在 webcenter 中。
<jsp:useBean id="pathEditor" class="backing.bean.AppletBean" scope="page"/>
<jsp:getProperty name="pathEditor" property="username" />
${pageContext.request.remoteUser}
<jsp:setProperty name="pathEditor" property="username" value="${pageContext.request.remoteUser}"/>
<jsp:getProperty name="pathEditor" property="username" />
我正在从同一个 m/c 的两个不同浏览器登录。第一个用户名值正确,而第二个登录打印${pageContext.request.remoteUser} 正确,但<jsp:getProperty name="pathEditor" property="username" /> 打印前一个登录用户。它给人的印象是 setProperty 根本没有被调用。任何人都可以建议这里可能有什么问题。我正在使用两个不同的浏览器并且没有静态变量。我为这个测试用例保持两个浏览器打开。可能是因为在 webcenter 中处理 portlet 的方式。如果我将 bean 的范围声明为页面,这是否不是线程安全的正确方法。我能做些什么来使它线程安全?我使 bean 属性变量 volatile 但这没有任何好处。或者我有可能在使用后破坏豆子?如何销毁 bean?
所以如果我在 jsp 中包含这个 - ,那应该可以工作。但它也不起作用。
Edit# 调试代码后,我看到了这种不寻常的行为。 我将 System.out.println 放在我的 bean 中,以查看来自 jsp 的值。 虽然 ${pageContext.request.remoteUser} 打印新值 - jsp:setProperty name="pathEditor" property="username" value="${pageContext.request.remoteUser}"/> 将旧值传递给我的 bean setter 方法。这我无法理解。请帮忙。
【问题讨论】:
标签: jsp properties set javabeans