2017-02-21 43 views
0

Я создал форму login.jsp и когда пользователь вводит имя пользователя & пароль, тогда я хочу создать URL-адрес: /companyName/username.Как создать динамический url в struts2?

Пример: Если название компании «ABC» и имя пользователя является «parth1», то есть URL "http://localhost:8080/Temp_Central_Emp/abc/parth1/afterLogin.jsp"

Я получаю companyName из базы данных на основе имени пользователя.

Файл: 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> 

Файл: 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> 

Файл: 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 */ 
} 

Я использую эту ссылку, но мне нужно другое. Creating dynamic URL with 2 action parameters in Struts 2 using OGNL

Я также пробую код из этой ссылки, но все же я не решаю его.

+0

проверить это http://stackoverflow.com/questions/23780282/how-to-create-custom-urls-with-struts2like-www-twitter-com-goodyzain – goodyzain

+0

@goodyzain, когда я add ** ** i получить ошибку. И я также изменил свой код на основе ответа на ваш вопрос, но не работал. Если вы знаете, как создать динамический URL-адрес, пожалуйста, предоставьте мне код, основанный на вышеуказанном вопросе. –

+0

Какая ошибка вы получаете при добавлении Advanced wildCard <константа name = "struts.patternMatcher" value = "regex" /> ?? – goodyzain

ответ

0

попытки поставить эту URL-адрес переменные в вашем struts.xml:

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

и удалить аннотацию Action здесь:

@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

спасибо. Но я получаю сообщение об ошибке: ** Статус HTTP 404 - /Temp_Central_Emp/companyName/parth/afterLogin.jsp** –

+0

Думаю, вам также необходимо динамически изменить имя вашей компании. – msagala25

+0

Если у вас есть идея, пожалуйста, отредактируйте приведенный выше код, который вы написали. –

0

Результат должен быть перенаправление типа действия, если вы хотите изменить URL и следовать шаблону PRG. См Parameters in configuration results:

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

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

Я использую ваш код в struts.xml, но он не работает. –

+0

вы можете сказать мне, где я пишу этот код в struts.xml средства в или вне

+0

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