2017-02-21 4 views
0

Ich habe Formular login.jsp erstellt und wenn Benutzer Benutzername & Passwort eingeben, dann möchte ich URL wie: /companyName/username erstellen.Wie erstellt man dynamische URL in Struts2?

Beispiel: Wenn Firmenname ist „abc“ und Benutzername ist „parth1“ dann ist url "http://localhost:8080/Temp_Central_Emp/abc/parth1/afterLogin.jsp"

ich companyName aus der Datenbank erhalten, basierend auf den Benutzernamen.

Datei: login.jsp

<s:form action="afterLogin" method="post"> 
    <s:textfield label="Enter username" key="userId" maxlength="5" size="30" id="userId"/> 
    <s:password label="Enter password" key="userPsw" size="30" /> 
    <tr> 
     <td></td> 
     <td> 
      <img src="<c:url value='simple-captcha.png' />" /> 
      <br /> 
      <p>Press F5 for refresh.</p> 
     </td> 
    </tr> 
    <s:textfield label="Enter code" key="captchaResponse" size="30" /> 
    <s:submit value="Login" /> 
</s:form> 

Datei: struts.xml

<struts> 
<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> 
<constant name="struts.devMode" value="true" /> 
<package name="a" extends="struts-default"> 

    <action name="afterLogin" class="com.parth.LoginAction"> 
     <result name="success">/afterLogin.jsp</result> 
    </action> 

</package> 

Datei: LoginAction.java

public class LoginAction extends ActionSupport{ 

private Map<String, Object> session; 
private String userId; 
private String userPsw; 
private String url; 

private static final long serialVersionUID = 1L; 

@Override 
@Action(value="{url}/afterLogin") 
public String execute() throws Exception {  
    // business logic to insert user into database 
    url = "/companyName/" + userId; 
    return SUCCESS; 
} 

/* Getters and Setters */ 
} 

Ich verweise diesen Link, aber mein Bedarf ist anders. Creating dynamic URL with 2 action parameters in Struts 2 using OGNL

Ich versuche auch Code von diesem Link, aber ich bin es immer noch nicht lösen.

+0

check this out http://stackoverflow.com/questions/23780282/how-to-create-custom-urls-with-struts2like-www-twitter-com-goodyzain – goodyzain

+0

@goodyzain wenn i add ** ** Ich erhalte einen Fehler. Und ich änderte auch meinen Code basierend auf der Antwort auf Ihre Frage, aber immer noch nicht funktionieren. Wenn Sie wissen, wie dynamische URL generieren dann bitte Code basierend auf der obigen Frage. –

+0

Was ist der Fehler, den Sie bekommen, wenn Sie Advanced Wildcard hinzufügen ?? – goodyzain

Antwort

0

Versuch zu setzen, dass url Variable in Ihrem struts.xml:

<action name="afterLogin" class="com.parth.LoginAction"> 
    <result name="success">${url}/afterLogin.jsp</result> 
</action> 

und entfernen Sie Ihre Anmerkung Action hier:

@Override 
//@Action(value="{url}/afterLogin") // remove this 
public String execute() throws Exception {  
    // business logic to insert user into database 
    url = "/companyName/" + userId; 
    return SUCCESS; 
} 
+0

danke. Aber ich erhalte Fehler: ** HTTP-Status 404 - /Temp_Central_Emp/companyName/parth/afterLogin.jsp** –

+0

Ich denke, dass Sie Ihren Firmennamen auch dynamisch ändern müssen. – msagala25

+0

Wenn Sie eine Idee haben, dann bearbeiten Sie bitte den obigen Code, den Sie geschrieben haben. –

0

Das Ergebnis sollte der Umleitung Aktionstyp sein, wenn Sie ändern möchten, die URL und folgen PRG-Muster. Siehe Parameters in configuration results:

<result name="success" type="redirectAction">afterLogin?companyName=${companyName}&userId=${userId}</result> 

<action name="afterLogin"> 
    <result>/afterLogin.jsp</result> 
</action> 
+0

Ich verwende Ihren Code in struts.xml, aber es funktioniert nicht. –

+0

können Sie mir sagen, wo ich diesen Code in struts.xml schreiben Mittel im oder außerhalb des

+0

http://struts.apache.org/docs/result-configuration.html –

Verwandte Themen