关于Struts2框架下jsp获取action的布尔值问题

--------------------------------------------------------------------------------------------------------------------

问题:action中的布尔值无法取值

原因:boolean型变量在MyEclipse自动生成get和set方法会发生改变,改变之后无法对应Struts2的赋值规律

解决办法:按照Struts的赋值规律修改boolean变量的get和set方法,具体修改请看下文;

-----------------------------------------------------------------------------------------------------------------------

当我在使用Struts2框架时,遇到jsp无法从action中获取布尔值的问题,情况如下:

一:定义person对象,自动生成get和set方法,如下:

 1 import java.io.Serializable;
 2
 3 public class PersonBean implements Serializable {
 4
 5     private String idCard;
 6     private String personName;
 7     private String personSex;
 8     private int personAge;
 9     private boolean isMarry;
10
11     public String getIdCard() {
12         return idCard;
13     }
14
15     public void setIdCard(String idCard) {
16         this.idCard = idCard;
17     }
18
19     public String getPersonName() {
20         return personName;
21     }
22
23     public void setPersonName(String personName) {
24         this.personName = personName;
25     }
26
27     public String getPersonSex() {
28         return personSex;
29     }
30
31     public void setPersonSex(String personSex) {
32         this.personSex = personSex;
33     }
34
35     public int getPersonAge() {
36         return personAge;
37     }
38
39     public void setPersonAge(int personAge) {
40         this.personAge = personAge;
41     }
42
43     public boolean isMarry() {
44         return isMarry;
45     }
46
47     public void setMarry(boolean isMarry) {
48         this.isMarry = isMarry;
49     }
50
51
52 }

二、对应的action,如下:

 1 import java.util.List;
 2 import top.malloc.pojo.PersonPOJO;
 3 import com.opensymphony.xwork2.ActionSupport;
 4
 5 public class CityAction extends ActionSupport{
 6     private List persons;
 7
 8     public List getPersons() {
 9         return persons;
10     }
11
12     public void setPersons(List persons) {
13         this.persons = persons;
14     }
15
16     public String person() throws Exception{
17         persons=new PersonPOJO().getPerson();
18         return "success";
19     }
20
21 }

三、相应的jsp,body省略

<table border="3">
      <tr>
     <td> 姓名</td><td>性别</td><td>年龄</td><td>身份认证号</td><td>婚姻状况</td>
     </tr>
     <s:iterator value="persons" var="per">
     <tr>
     <td><s:property value="#per.personName"/></td>
     <td><s:property value="#per.personSex"/></td>
     <td><s:property value="#per.personAge"/></td>
     <td><s:property value="#per.idCard"/></td>
     <td><s:if test="#per.isMarry==true">已婚</s:if>
            <s:elseif test="#per.isMarry==false">未婚</s:elseif></td>
     </tr>
     </s:iterator>
     </table>

出现的问题:action中的布尔值无法取值,仔细查看代码,发现问题出在布尔值的get和set方法上,自动生成的get和set方法无法遵循Struts的赋值规则

错误代码如下:

     public boolean isMarry() {
      return isMarry;
     }

     public void setMarry(boolean isMarry) {
         this.isMarry = isMarry;
     }

修改之后:

        public boolean getIsMarry() {
        return isMarry;
    }

    public void setIsMarry(boolean isMarry) {
        this.isMarry = isMarry;
    }

运行结果如上图

时间: 2024-10-19 13:42:40

关于Struts2框架下jsp获取action的布尔值问题的相关文章

IE8下Jquery获取select选中的值的问题

我们一般使用jquery获取select时,一般这么用: <select id='a'>     <option selected='selected' value='1'> </select> var selectedValue = $("#a").val(); 在非IE8下,selectedValue的值为"1",typeof selectedValue 为"string". 在IE8下,selectedV

ListView在编辑状态下不能获取修改后的值,无法更新数据

ListView在编辑状态下不能获取修改后的值,获取到的总是以前的值解决方法:在page_load事件里写: if(!IsPostBack) { ListViewBind(); } 原因:这涉及到aspx页各事件的执行顺序,因为如果没有判断IsPostBack,每次点更新时page_load都会去执行ListViewBind(),对ListView进行重新绑定,那你再去获取ListView里的值时当然就是以前的值了,这样写后ListView没有被重新绑定,里面的数据就还是以前的,所以就可以获取到

Struts2配置及jsp与action之间传值

一.整体配置及开发流程 1.首先写javabean,并生成响应的getter.setter方法,一般继承ActionSupport,须有一个抛出Exception的方法,且返回值为String类型: 2.配置Web.xml <?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/java

WebSocket在Struts2框架下发生配置冲突的问题

前几天完成了聊天功能之后,想把这个功能模块整合进Struts2框架里,却发现WebSocket无法建立连接.弄了两天才发现原因. 我的项目里主要是两个原因: 一. <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 这里Struts2拦截了所有请求,修改方法是:在Struts.xml里添加

[ SSH框架 ] Struts2框架学习之三(OGNl和ValueStack值栈学习)

一.OGNL概述 1.1 什么是OGNL OGNL的全称是对象图导航语言( object-graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可以通过某种表达式语法,存取Java对象的任意属性,调用Java对象的方法,同时能够自动实现必要的类型转换.如果把表达式看作是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁. 1.2 OGNL的作用 Struts2默认的表达式语言就是OGNL,它具有以下特点:

SSH框架下ajax调用action并生成JSON再传递到客户端【以get和post方式提交】

需要完成的任务: 主要是把JSP页面上图片ID传给服务器端,服务器读取cookie看是否有username,如果有则根据ID读取MongoDB数据库,读出图片URL,再存放到mysql中的collection数据库中,实现了收藏功能. 第一步:就是使用ajax实现前后台的交互. jsp页面代码: <a id="1" class="bsc" onclick="collect(this.id)"></a> js代码: <

Struts2框架下表单数据的流向以及映射关系

本例框架很简单:默认页面为用户登录界面login.jsp,提交后由action类LoginAction.java来判断成功或失败,登录结果分别由success.jsp和failure.jsp呈现. 一. 相关文件目录 1.web.xml的目录:StrutsTest\WebContent\WEB-INF\web.xml. 2.struts.xml的目录:StrutsTest\WebContent\WEB-INF\classes\struts.xml. 3.LoginAction的目录:Struts

struts2中的jsp与action

今天做的项目中遇到这样的一个问题,后台代码都是对的.jsp页面是这样,一个表单,执行完动作之后返回结果信息. 使用的是jsp标准标签库中的<c:if> 后面的test判断条件写的是后台action传过来的success或者error是否为空(empty 或者not empty),在struts.xml中也配置了相应的result.现象是一直进不去<c:if>或者直接跳过<c:if>显示里面的语句在页面上.检查完是不是某些库未加进来之后,确定不是那些原因.最终找到stru

Struts2 框架下 session 读出来为null

我用的strust2框架,开始的时候这么写的: 在 登陆函数中(注释部分): public String dealerLogin(){        EntityInfo entityinfo=dealerservice.dealerLogin(super.account,super.password);           if(entityinfo!=null){/*             ActionContext ac = ActionContext.getContext();我开始用