JFinal 提交表单后保存数据库为null,后台set中文字保存乱码?各位能否帮忙看看

诠释这低调 发布于 2013/07/25 21:42
阅读 1K+
收藏 0

@JFinal 你好,想跟你请教个问题:

1、提交表单后台控制台中显示打印参数是有值,使用getModel 在保存protocolContent.save();
时,数据库中保存数据为null?

2、后台直接  protocolContent.set("promulgator", "管理员");在数据库中为乱码,该字段为varchar 字段也是gb2312设置?

想请教一下您究竟哪里出的问题?

顺便再请教一个问题,页面使用sitemesh装饰器,执行后台方法完后,再用render返回指定的jsp页面,而之前装饰在子页面上的所有样式,在返回页面是就变成了没装饰页面,连样式都没了,能否能解决?怎么解决?

代码如下:

控制台打印:
JFinal action report -------- 2013-07-25 21:20:14 ------------------------------
Controller  : org.bibao.action.simulate.SimulateDataController.(SimulateDataController.java:1)
Method      : save
Parameter   : t_protocolContent.content=1、市场调研
2、市场考察  t_protocolContent.userType=0  t_protocolContent.protocolType=0  t_protocolContent.name=市场规则 
--------------------------------------------------------------------------------
保存成功!

config代码:

arp.addMapping("t_protocolContent", ProtocolContent.class);//映射

前端代码:

<form action="${ctx}/jfinal/simulate/save" method="post">
       <div style="padding-left: 20%; padding-right: 20%">
        <span>协议名称:</span>
        <span><input type="text" id="name"
          name="t_protocolContent.name"> </span>
       </div>
       <div style="padding-left: 20%; padding-right: 20%">
        <span>协议类型:</span>
        <span> <select id="selectorType">
          <option id="type" value="0">
           商品规则
          </option>
          <option id="type" value="1">
           商品条款
          </option>
         </select> <input type="hidden" id="protocolType"
          name="t_protocolContent.protocolType"> </span>
       </div>
       <div style="padding-left: 20%; padding-right: 20%">
        <span>协议内容:</span>
        <span> <textarea id="content_text"
          name="t_protocolContent.content" rows="10" cols="70"></textarea>
        </span>
       </div>
       <div style="padding-left: 20%; padding-right: 20%">
        <span>使用者类型:</span><span> <select id="selectorUType">
          <option id="uType" value="0">
           商家
          </option>
          <option id="uType" value="1">
           买家
          </option>
         </select> <input type="hidden" id="userType"
          name="t_protocolContent.userType"> </span>
       </div>
       <div
        style="padding-left: 20%; padding-right: 20%; text-align: center;">
        <input type="submit" id="sb_bnt" value="提交">
        &nbsp;&nbsp;
        <input type="button" id="cal_bnt" value="取消">
       </div>
      </form>

后台代码:

public void save(){
  try {
   ProtocolContent protocolContent = getModel(ProtocolContent.class);   

   protocolContent.set("promulgator", "管理员");//默认管理员  
   protocolContent.set("issueTime", new Date());
   protocolContent.set("effectiveTime", new Date());
   boolean result = protocolContent.save();
   if(result){
    System.out.println("保存成功!");
    setSessionAttr("save_msg", "保存成功!");
   }
  } catch (Exception e) {
   setSessionAttr("save_msg", "保存失败 ! 原因:" + e.getMessage());
  }
  redirect("/view/common/simulateData.jsp");
 }

 @SuppressWarnings("serial")
public class ProtocolContent extends Model<ProtocolContent> {
 public static final ProtocolContent protocolContentDao = new ProtocolContent();
}

加载中
0
JFinal
JFinal

1:数据库保存为null值的问题,改一下页面表单中的“t_protocolContent”为protocolContent”。具体原因仔细看JFinal手册

2:乱码问题,保持各环节编码一致即可。JFinal默认使用utf-8,否则需要在configConstant(Constants me)中进行配置me.setEncoding(other)

诠释这低调
嗯好的 我试试,顺便再请教一个问题,页面使用sitemesh装饰器,执行后台方法完后,再用render返回指定的jsp页面,而之前装饰在子页面上的所有样式在返回页面是就变成了没装饰过的页面(连样式都没了),这个问题能否能解决?
0
dreamers
dreamers
乱码的本质是编码。所以,哈哈,从数据库,java, html,tomcat,检查所有经过的地方都设置成统一的编码就不会有乱码了。
返回顶部
顶部