2014-10-29 2 views
0

Я пытаюсь установить некоторые значения в объекте HttpServletRequest в действии struts2, но на странице JSP он показывает его как null.Как создать объект HttpServletRequest в действии struts2

Код на struts.xml является:

<action name="login" method="execute" class="com.ui.LoginAction"> 
    <result name="success">/tc/login.jsp</result> 
    <result name="error">/tc/session_timeout.jsp</result> 
</action> 

класс Действие:

package com.ui; 

import com.opensymphony.xwork2.ActionSupport; 
import org.apache.log4j.Logger; 
import javax.servlet.http.HttpServletRequest; 
import org.apache.struts2.interceptor.ServletRequestAware; 


public class LoginAction extends ActionSupport implements ServletRequestAware{ 

private String username; 
private String password; 

HttpServletRequest request; 

public String execute() { 
    try 
    { 

     request.setAttribute("demo", "value Stored in Request...."); 

     return "success"; 
    } 
    catch (Exception e) 
    { 
     Logger.getLogger(Constants.LOG_NAME).error("Error with action!",e); 
     return "error"; 
    } 
} 

public void setServletRequest(HttpServletRequest request) { 
    this.request = request; 
} 

public HttpServletRequest getServletRequest() { 
    return this.request; 
} 


public String getJ_password() 
{ 
    return this.password; 
} 

public String getJ_username() 
{ 
    return this.username; 
} 

public void setJ_password(String string) 
{ 
    this.password = string; 
} 

public void setJ_username(String string) 
{ 
    this.username = string; 
} 

} 

Код на JSP-странице:

<%@ page contentType="text/html; charset=UTF-8"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Welcome Page - Struts 2 - Login Application</title> 
</head> 

<body> 
    Login Page...<br> 
    <%= request.getAttribute("demo") %> 
</body> 
</html> 

Но на JSP-странице он показывает, как ноль.

Любая идея по этому вопросу?

+0

Мое требование, чтобы установить значения в HttpServletRequest объект в одном пространстве имен и доступ к нему в другом пространстве имен. Но я не могу получить к нему доступ. Из приведенного выше кода я должен получить значения на странице JSP, но все же он показывает его как null. – Rahul

+0

Не используйте скрипты. С S2 вам не нужно вводить значения в запрос. –

+0

@Aleksandr Из вышеприведенного кода это означает, что объект HttpServletRequest не создан должным образом, поскольку я не могу получить значение, сохраненное в запросе? – Rahul

ответ

0

Вы можете установить атрибут как переменную класса в свой класс действий и поместить для него геттер. В вашем jsp вы можете получить к нему доступ с помощью тегов struts.

ява код

public class LoginAction extends ActionSupport implements ServletRequestAware{ 
    private String demo; 

    public String getDemo(){return this.demo;} 

    public String execute() { 
    try 
    { 
     //request.setAttribute("demo", "value Stored in Request...."); 
     this.demo = "value stored in request"; 
     return "success"; 
    } 
    catch (Exception e) 
    { 
     Logger.getLogger(Constants.LOG_NAME).error("Error with action!",e); 
     return "error"; 
    } 
    } 
} 

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<s:property value="demo" /> 
Смежные вопросы