本人小菜,想请教一个问题,我在action中有一个username字段,并在execute中设置了值,也设置了相应的get/set方法,百度谷歌了很多,都说在JSP页面中直接使用<s:property value="username"/>就可以取得值了,或者是Servlet的API把值放在作用域中就可以取得值了。但是我这两种方式都试过了,都不行,取不出来。EL表达式也不好使。代码:package com.ccniit.action;import com.opensymphony.xwork2.ActionSupport;public class TestAction extends ActionSupport { private String username; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} @Override
public String execute() throws Exception {
username = "zhangsan";
return SUCCESS;
}
}<struts>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default">
<action name="up" class="com.ccniit.action.TestAction">
<result name="success">/index.jsp</result>
</action>
    </package>
</struts>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="up" method="post">
<s:property value="username"/>
</form>
</body>
</html>

解决方案 »

  1.   

    我想请问你是怎么访问的
    http://localhost:8080/项目名/up     是这样访问的吗
      

  2.   

    或者
    //index.jsp   这样写
    <form action="up" method="post">
       <s:property value="username"/>
       <input type="submit" value="提交"/>
    </form> 
      

  3.   

    楼主这样试试,
    在你  username = "zhangsan";下面,加上这句 ActionContext.getContext().getValueStack().push(username);
      

  4.   

    或者
    //index.jsp   这样写
    <form action="up" method="post">
       <s:property value="username"/>
       <input type="submit" value="提交"/>
    </form> 
    点击提交确实能读取出来,但是如果我不点提交的话,怎么读取出来呢?现在我主要想做一个从数据库里面读取数据出来,然后把那些数据显示到JSP页面的一个功能。
      

  5.   

    username = "zhangsan";
    改为
    this.setUsername("zhangsan");
      

  6.   

    不行的,其实和username="zhangsan"是一样的吧。
      

  7.   

    你这个jsp有问题
    你写的form提交后跳转  但是你根本没提交 
    所以完全没有跳转 所以也没调用到后面的action
    这样是取不到值的
      

  8.   

    哦哦,那么,也就是说如果我要从后台提取出数据,必须得用form表单提交么。
      

  9.   

    <form action="up" method="post">
            <s:property value="username"/>    
    </form>改成
    <form action="st2" method="post">
       <input type="submit" value="提交"/>
    </form>
    <s:property value="name"/>
    可以取到值
      

  10.   

    你是在execute方法里面设置的值  所以你必须要执行那个方法  所以你直接取是取不到。
      

  11.   

    我也被蒙住了!对,必须提交,提交行为就是把页面的数据封装到request对象中。
      

  12.   

    是否要form表单提交来得到后台的数据完全是根据自己的需求所决定的,
      

  13.   

    虽然我的问题解决了,但是我想问问,如果不通过表单提交来得到后台的数据,也不用JS,ajax等技术的话,怎么获取后台的数据?
      

  14.   

    貌似request.getRequestDispatcher("").forward(request,response);这样可以把数据存到request域中,然后在jsp页面用el表达式获取到数据。("")这里面写你要跳转的jsp页面。但是这样写的话。你要运行servlet页面才行,运行jsp页面是没有数据的。