请问Struts2高手,Struts2的框架对于jsp取request有没有影响?
为什么在div中我能够取得到session的内容,而取不道request的内容?
画面的意图是这样的,我想在画面初始化的时候,调用action,然后在action中从数据库把邮政编码和地址的List对象取到,然后把这个对象传到javascript中去,同时画面输入的邮政编码也作为参数,这样在输入完邮政编码后,
地址就自动显示出来。想实现这样的功能,不过用request取不到值,用session我不知道如何保存值到javascript中去。login.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@   page   import= "java.util.* "   %>
<%@   page   import= "javax.servlet.http.HttpServletRequest"   %>
<%@   page   import= "org.apache.struts2.ServletActionContext"   %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib prefix="s" uri="/struts-tags" %><body>
<s:head theme="ajax"/>
<s:url id="url_panel1" action="Login/Init" /><div>
<s:div id="panel1"
       label="login"
       href="%{#url_panel1}"
       theme="ajax"
    />
</div>
LoginChild.jsp<%@ page contentType="text/html; charset=UTF-8" import="java.util.*"%>
<%@ taglib uri="/struts-tags" prefix="s" %><div class="containerLogin">
  <div class="loginArea">
    <s:form action="Login/check" method="POST" validate="false">
      <tr>
        <td colspan="2">
          <s:actionerror />
        </td>
      </tr>      <s:textfield name="username"
                   label="username"
                   size="12"/>
      <s:text name="${mysession}" />
      <% request.getAttribute("myrequest");%>
      <s:submit theme="ajax" key="OK" />
    </s:form>
  </div>
</div>
struts.xml:<action name="Login/*" class="hello.LoginAction" method="{1}">
   
<result>/jsp/Result.jsp</result>
<result name="input">/jsp/Result.jsp</result>
<result name="init">/jsp/LoginChild.jsp</result>
</action>
LoginAction.javapackage hello;import java.util.*;
import java.sql.SQLException;
import java.sql.Date;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
public class LoginAction extends ActionSupport
{ public String doInit() {
Map session = ActionContext.getContext().getApplication();

HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("myrequest", "getMyRequest");
session.put("mysession", "getMySession");
return "init";
}
}我刚学struts2,我有两个问题请教高手
1.为什么我无法取得session对象到变量中去,比如
<% String name = session.getValue("**")%>
struts2中有类似的方法吗?2.为什么在loginChild.jsp中<% request.getAttribute("myrequest");%>取不到值?3.如果能够取到对象并保存起来,如何作为javascript的参数出进去,要如何转化吗?4.为什么javascript函数嵌在loginChild.jsp中不运行,比如在loginChild.jsp中加入
 <script language="javascript">
  alert('a');
 </script>
  有跟没有一个样,根本就不输出。摆脱大家了!

解决方案 »

  1.   

    关于取值问题你可用下面两种方法试试:
    1,你可以在你的Action中定义全局变量HttpServletRequest request,这样在doInit中将"myrequest"放到request中去,在jsp页面中就可以用如下方式取出值了
    s:property value="#request.myrequest"/>
    2,你的Action实现ServletRequestAware接口,一样可以取到request,可以将你的"myrequest"值放到request中去,在jsp页面中一样用<s:property value="#request.myrequest" />
    PS:你的100分很诱惑人哟,不要用这种方式来发问啦,真正的高手不会理啦!