Java 会话属性未反映在JSP中
因此,我有一个jsp-one,它作为会话加载一些请求参数,我在第二个jsp中访问该会话 我的jsp 1代码是:Java 会话属性未反映在JSP中,java,jsp,session,servlets,Java,Jsp,Session,Servlets,因此,我有一个jsp-one,它作为会话加载一些请求参数,我在第二个jsp中访问该会话 我的jsp 1代码是: <jsp:useBean id="Emails" scope="request" class="java.lang.String" /> <% String email = Emails; session.setAttribute( "allEmail",email); %> <p style="display:block" ><%= se
<jsp:useBean id="Emails" scope="request" class="java.lang.String" />
<%
String email = Emails;
session.setAttribute( "allEmail",email);
%>
<p style="display:block" ><%= session.getAttribute( "allEmail" )%></p>
<p style="display:block" ><%= session.getAttribute( "allEmail" )%></p>
我认为问题在于两个jsp都是同时初始化的,因此第二个jsp中的会话没有任何价值 这里要传递的是会话范围中的字符串。 1) 对此,您不需要jsp useBean。您可以使用当前拥有的scriptlet直接在会话范围中设置 要使用jsp useBean标记,组件类应为JavaBean类型。您使用的是不可变的字符串类。 所以您不能为要在useBean中使用的字符串设置任何属性。 不幸的是,在分配时未捕获/未抛出scriptlet错误(不知道)
String email = Emails;
为什么在设置时它会工作
session.setAttribute( "allEmail","hello world");
这与设置一样好:
<%
String email = "hello world";
session.setAttribute( "allEmail",email);
%>
然后将属性设置为:
<jsp:useBean id="yourBean" class="package.YourBean" scope="bean scope">
<jsp:setProperty name="yourBean" property="propertyName" value="value"/>
...........
</jsp:useBean>
...........
根据上述场景。因为请求肯定会保留会话对象
您可以尝试以下方法:-
当您在没有访问jsp1的情况下访问jsp2时,会话中似乎没有这样的属性……如果您使用的是,您认为即使JSP在不同的时间初始化,这种方法也能工作吗?这对我来说非常有效,有没有其他方法可以工作,或者这是最干净的方法
public class YourBean implements java.io.Serializable
{
private String propertyName = null;
public String getPropertyName(){
return propertyName;
}
public void setPropertyName(String propertyName){
this.propertyName = propertyName;
}
}
<jsp:useBean id="yourBean" class="package.YourBean" scope="bean scope">
<jsp:setProperty name="yourBean" property="propertyName" value="value"/>
...........
</jsp:useBean>