使用JSF从JSP创建的会话bean

使用JSF从JSP创建的会话bean,jsp,jsf,Jsp,Jsf,因此,我正在使用JSF创建和管理一个bean。JSF然后链接到我需要访问托管bean的JSP页面。JSF代码: <h:inputText id="firstName" value="#{registration.lastName}"/> <h:commandButton value="Register" action="confirm.jsp"/> JSP: <jsp:useBean id = "registration" scope = "session"

因此,我正在使用JSF创建和管理一个bean。JSF然后链接到我需要访问托管bean的JSP页面。JSF代码:

<h:inputText id="firstName" value="#{registration.lastName}"/>
<h:commandButton value="Register" action="confirm.jsp"/>

JSP:

<jsp:useBean id = "registration" scope = "session"
    class = "Project1.Registration">
</jsp:useBean>

<%=
        registration.getFirstName()
%>

因此,JSP firstName为null。您可以使用“usebean”访问JSFbean吗?我还需要做更多的事情来调用JSP并传递托管bean吗?显然,这是一个类,我不认为有理由这样混合使用这两个类,但遗憾的是,这是一个要求。感谢您的帮助

有两个错误:

  • 如果bean已经由某个控制器预先创建(比如JSF,甚至是普通的servlet),则不需要
    。只需直接按其名称访问即可。它是一个会话范围的bean,只是通过
    ${registration}
    以通常的EL方式作为会话属性提供

  • 和EL变量都不是scriptlet
    范围中可用的直接变量。取而代之的是,用常规的方法。更重要的是,十多年来,Scriptlet一直受到强烈的抵制。您应该停止使用它们,并将
    web.xml
    配置为禁用它们

  • 因此,总而言之,这应该可以:

    <c:out value="${registration.firstName}" />
    
    
    
    从技术上讲,
    不是强制性的,您也可以只使用
    ${registration.firstName}
    ,但与Facelets相反,传统JSP没有。因此,在功能上必须使用
    ,以防止在HTML输出中内联重新显示未初始化的用户控制输入时出现XSS攻击漏洞

    另见:
      • 有两个错误:

      • 如果bean已经由某个控制器预先创建(比如JSF,甚至是普通的servlet),则不需要
        。只需直接按其名称访问即可。它是一个会话范围的bean,只是通过
        ${registration}
        以通常的EL方式作为会话属性提供

      • 和EL变量都不是scriptlet
        范围中可用的直接变量。取而代之的是,用常规的方法。更重要的是,十多年来,Scriptlet一直受到强烈的抵制。您应该停止使用它们,并将
        web.xml
        配置为禁用它们

      • 因此,总而言之,这应该可以:

        <c:out value="${registration.firstName}" />
        
        
        
        从技术上讲,
        不是强制性的,您也可以只使用
        ${registration.firstName}
        ,但与Facelets相反,传统JSP没有。因此,在功能上必须使用
        ,以防止在HTML输出中内联重新显示未初始化的用户控制输入时出现XSS攻击漏洞

        另见: