Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 如何在ejb项目中添加或设置facesMessage_Jsf 2_Ejb_Jboss7.x - Fatal编程技术网

Jsf 2 如何在ejb项目中添加或设置facesMessage

Jsf 2 如何在ejb项目中添加或设置facesMessage,jsf-2,ejb,jboss7.x,Jsf 2,Ejb,Jboss7.x,我有一个war和ejb的ear项目。使用omnifaces,我通常在war项目中设置错误消息。但在一个项目中,我使用picketlink进行身份验证,不幸的是,我需要将@picketlink注释类移动到ejb中,否则它将无法工作 然后我的身份验证类也在ejb项目中,然后当用户输入错误的凭证时,我需要显示一个本地化错误。在ejb项目中如何做到这一点 或者有没有一种方法可以让picketlink工作,将身份验证类移回war项目 示例代码: 身份验证类别: @PicketLink public cla

我有一个war和ejb的ear项目。使用omnifaces,我通常在war项目中设置错误消息。但在一个项目中,我使用picketlink进行身份验证,不幸的是,我需要将@picketlink注释类移动到ejb中,否则它将无法工作

然后我的身份验证类也在ejb项目中,然后当用户输入错误的凭证时,我需要显示一个本地化错误。在ejb项目中如何做到这一点

或者有没有一种方法可以让picketlink工作,将身份验证类移回war项目

示例代码: 身份验证类别:

@PicketLink
public class PicketlinkAuthenticator extends BaseAuthenticator { }
JBoss部署文件

<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure>

    <ear-subdeployments-isolated>true</ear-subdeployments-isolated>

    <sub-deployment name="my-project-web.war">
        <dependencies>
            <module name="org.picketlink" />
        </dependencies>
    </sub-deployment>

</jboss-deployment-structure>

真的

谢谢

我找到了两种解决问题的方法:

1.)将身份验证类(picketlink)移动到web层,以便可以设置和本地化消息

2.)在ejb层中实现JPA IDMConfiguration。以及web层中的身份验证类。
请参阅github中的此项目:picketlink授权idm jpa。通过这种方式,我们创建了一个picketlink资源,我们将在web层身份验证中使用它。

您不应该访问EJB中的JSF/Servlet工件,例如
FacesContext
ServletRequest
。因此,答案应该是在战争中完成这项工作。我不做PicketLink,所以我不能详细讨论这个问题,但是如果你重新解释这个问题,并告诉更多与“不起作用”相关的症状,那么PicketLink用户可能能够回答这个问题。嗨,Balus,谢谢你的提示。我已经找到了一个解决方案,虽然它不是我真正想要的。我将补充一个单独的答案。