2017-02-13 1 views
0

Ich möchte eine Registrierung vornehmen, indem ich userEmail, userPassword und userRole in .properties-Dateien schreibe und dann mit ihnen in auth-config.xml arbeite. so, ich mache dies in loginManagerBean: ich bin bewusst, Code-Duplizierung im Register Methode, ich werde fix itMethode nicht gefunden in einer Java Bean durch xhtml mit der genauen Signatur

public void register(String Remail, String Rpassword, String Rrole) throws InvalidUserException{ 
    Properties prop = new Properties(); 
    InputStream in = getClass().getResourceAsStream("auction-roles.properties"); 
    try { 
     prop.load(in); 
     prop.setProperty(Remail,Rrole); 
     prop.store(new FileOutputStream("auction-roles.properties"), null); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    Properties prop2 = new Properties(); 
    InputStream in2 = getClass().getResourceAsStream("auction-users.properties"); 
    try { 
     prop2.load(in2); 
     prop2.setProperty(Remail,Rpassword); 
     prop2.store(new FileOutputStream("auction-users.properties"), null); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    login(Remail,Rpassword); 

} 

Loginmanager ist ein benanntes, sessionscope .. Stateful Bean die Sache ist, dass Login funktioniert, aber bei der Anmeldung:

<h:commandButton id="registerButton" value="register" 
     action="#{loginManager.register(registerEmail, registerPassword, registerRole)}"/> 

ich habe diese Fehler nach der Registertaste klicken:

javax.servlet.ServletException: javax.el.MethodNotFoundException: /templates/register.xhtml @34,86 action="#{loginManager.register(registerEmail, registerPassword, registerRole)}": Method not found: class org.auction.LoginManager$244422980$Proxy$_$$_Weld$EnterpriseProxy$.register(java.lang.String, java.lang.String, java.lang.String) 

Antwort

1

übergeben Sie die Parameter durch f: param

<h:commandButton id="registerButton" value="register" action="#{loginManager.register} /> 
     <f:param name="regEmail" value="registerEmail" /> 
     <f:param name="regPwd" value="registerPassword" /> 
     <f:param name="regRole" value="registerRole" /> 
    </h:commandButton> 

In verwalteten Bean-Methode erhalten Sie den Wert wie dieser

public void register(){ 

Map<String, String> resMap = (Map<String, String>) externalContext.getRequestParameterMap(); 
String Remail= parameterMap.get("regEmail"); 
String Rpassword= parameterMap.get("regPwd"); 
String Rrole= parameterMap.get("regRole"); 

     Properties prop = new Properties(); 
InputStream in = getClass().getResourceAsStream("auction-roles.properties"); 
try { 
    prop.load(in); 
    prop.setProperty(Remail,Rrole); 
    prop.store(new FileOutputStream("auction-roles.properties"), null); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Properties prop2 = new Properties(); 
InputStream in2 = getClass().getResourceAsStream("auction-users.properties"); 
try { 
    prop2.load(in2); 
    prop2.setProperty(Remail,Rpassword); 
    prop2.store(new FileOutputStream("auction-users.properties"), null); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

login(Remail,Rpassword); 

     } 
+0

Dank .. getan, aber immer noch nicht funktioniert: "javax.servlet.ServletException: javax.el.MethodNotFoundException:/templates/registrieren. xhtml @ 33,92 action = "# {loginManager.register}": Methode nicht gefunden: class ".. die Bean ist benannt (loginManager) und bei der Anmeldung sieht sie die Methoden von loginManager, aber bei der Registrierung gibt es mir Fehler. Ich weiß wirklich nicht, was passiert – Nica

Verwandte Themen