Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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
Java SEAM中的“无法访问目标,标识符“authenticator”解析为空”_Java_Jsf_Seam - Fatal编程技术网

Java SEAM中的“无法访问目标,标识符“authenticator”解析为空”

Java SEAM中的“无法访问目标,标识符“authenticator”解析为空”,java,jsf,seam,Java,Jsf,Seam,我使用jboss-seam-2.2.0.GA,authenticator类来验证登录过程。当我输入用户名和密码并提交页面时,我在日志中收到以下错误消息: application E javax.el.PropertyNotFoundException: /login.xhtml @27,76 action="#{authenticator.login()}": Target Unreachable, identifier 'authenticator' resolved to null jav

我使用jboss-seam-2.2.0.GA,authenticator类来验证登录过程。当我输入用户名和密码并提交页面时,我在日志中收到以下错误消息:

application E javax.el.PropertyNotFoundException: /login.xhtml @27,76 action="#{authenticator.login()}": Target Unreachable, identifier 'authenticator' resolved to null javax.faces.el.EvaluationException: javax.el.PropertyNotFoundException: /login.xhtml @27,76 action="#{authenticator.login()}": Target Unreachable, identifier 'authenticator' resolved to null at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:387)
您的验证器类似乎已正确实现。我会在你的日志中进一步搜索,找出为什么没有创建它

另外,我建议发布components.xml中的相关部分。应该是这样的:

<security:identity authenticate-method="#{authenticator.login}"/>

在components.xml中,您告诉它调用{authenticator.authenticate},但是您的authenticator类没有authenticate方法。尝试将其更改为{authenticator.login}
@Name("authenticator")
@AutoCreate
public class Authenticator {    
    @Logger Log log;
    @In Identity identity;
    @In Credentials credentials;
    @In Session hibernateSession;

    public Authenticator() {}

    public void login() throws IOException {
        log.debug("calling login method ............... ");

        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

        StringBuffer location = new StringBuffer(request.getContextPath());
        location.append("/j_security_check?j_username=");
        location.append((credentials.getUsername() != null) ? credentials.getUsername() : "");
        location.append("&j_password=");
        location.append((credentials.getPassword() != null) ? credentials.getPassword() : "");

        log.debug("LOCATION : " + location.toString());

        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        response.sendRedirect(response.encodeRedirectURL(location.toString()));      
    }
}
<security:identity authenticate-method="#{authenticator.login}"/>