iteye_20886
2009-07-15 10:44
浏览 273
已采纳

Struts2.16 form表单提交中文为空值 很纠结啊

jsp form表单代码如下。
[quote]




名称:



昵称:



密码:



性别:

女男人妖



生日:



备注:


                <label for=""></label>
                <input name="status" type="hidden" value="1" />
                <input name="button" type="submit" class="sbutton" id="button" value="提交"/>
                      &nbsp;
                      <input name="button2" type="reset" class="sbutton" id="button2" value="返回" />
                </form>
                 </div>     

[/quote]

Struts.xml的配置
[quote]
<?xml version="1.0" encoding="gbk" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<package name="default" namespace="/" extends="struts-default">
    <action name="*">
        <result>/WEB-INF/jsp/{1}.jsp</result>
    </action>

    <action name="UserInseAction" class="com.lcsz.classmates.action.UserInfoAction">
        <!--  result name="success" type="redirect">login</result-->
        <result name="success" type="redirect">login</result>
        <result name="input" type="redirect">UserIns</result>
    </action>
</package>

[/quote]

UserInfoAction.java 代码
[quote]
package com.lcsz.classmates.action;

import com.lcsz.classmates.dao.UserDao;
import com.lcsz.classmates.dao.impl.UserDaoImpl;
import com.lcsz.classmates.pojo.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserInfoAction extends ActionSupport implements ModelDriven {

/**
 * long
 */
private static final long serialVersionUID = 1L;
public User user = new User();

public String execute(){
    UserDao userdao = new UserDaoImpl();
    try {
        if (userdao.UserIns(user)) {

            return SUCCESS;
        } else {
            return INPUT;
        }
    } catch (Exception e) {
        System.out.println("发现错误:"+e.getMessage());
        return INPUT ;
    }
}

public User getModel() {

    return user;
}

}

[/quote]

在数据库中的插入记录 中文的话就是null 英文和数字可以插入进行
[b]问题补充:[/b]
[b]在Action中的值 如果是中文就是 null 如果不是中文就是就正常 :cry: [/b]
[b]问题补充:[/b]
[color=red]很郁闷的,
由于刚学Struts2 很多问题不知道是在哪产生的。

Struts.properties 中的设置如下

struts.enable.DynamicMethodInvocation = true
struts.devMode = true
struts.configuration.xml.reload =true
struts.i18n.encoding =GBK
struts.locale =zh_CN

在jsp页面中也设置 GBK [/color]

页面上的设置 和 XML上的设置 都是GBK了。
数据库也是GBK

[b]问题补充:[/b]
[color=blue]
if (userdao.UserIns([color=violet]user[/color])) {

return SUCCESS;
} else {
return INPUT;
}

[/color]
中文就为null
英文和数字就有值

[b]问题补充:[/b]

[color=darkred]问题其实已经决绝了。但是我觉得决绝的不够理想[/color]
[list]
[*]1.我在程序中加了个encoding Filter
[/list]
数据库 jsp页面 Struts.xml都设置了gbk
为什么还要写Filter呢。。

[color=red][b]大家回答下这个问题吧[/b][/color]

[b]问题补充:[/b]
其实页面不一定要用s标签的

用一般的 form input 一样可以等到的

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

19条回答 默认 最新

  • iteye_19590 2009-07-17 16:55
    已采纳

    首先你要明确一个概念: Action封装form的字段值有两中方法:

    1. 直接采用属性封装:

      Action中定义各个的属性要与对应form中的参数同名,
      并提供GET/SET方法;

    2. 采用模型对象封装:
      Action中只定义一个模型对象:[color=blue]public User user = new User(); [/color]并提供GET/SET方法;

      form中写法为:

    我猜你本义是要采用第二中方法,所以应将jsp页面的form修改为:

    [color=red][size=medium][align=center][/align][/size][/color]

    评论
    解决 无用
    打赏 举报
查看更多回答(18条)

相关推荐 更多相似问题