GetModel 方法获取不到界面表单内入力

背景,想在弹出的对话框中如理要追加人员的信息,然后点击保存按钮,保存到数据库。
界面对话框为 模态对话框,使用了bootstrap 的界面框架。
以下为页面的部分代码:
<form action="/user/addUser" method="post" class="form-horizontal ">
<div class="form-group">
<label class="col-md-3 control-label" for="account-input">登录名</label>
<div class="col-md-9">
<input type="text" id="account-input" name="user.account" class="form-control" placeholder="登录名">
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" for="realname-input">真实姓名</label>
<div class="col-md-9">
<input type="text" id="realname-input" name="user.realname" class="form-control" placeholder="真实姓名">
</div>
</div>

以下为后台controller代码:

User user = getModel(User.class,"user");
String account = user.dao.getStr("account");

以下为config中的配置:

// 配置属性名(字段名)大小写不敏感容器工厂
arp.setContainerFactory(new CaseInsensitiveContainerFactory());
arp.addMapping("USERS","account",User.class);
arp.addMapping("SCHOOL","schname",School.class);

数据库使用的是oracle,下图为表结构:
キャプチャ.PNG
问题现象:
在controller中获取不到表单入力
以下为debug以后的截图:
キャプチャ.PNG
都是null。

我的疑问:
1. 如果直接通过getModel方法进行表单域内容封装,是否需要将所有字段都在界面进行设定值,只设定部分值是否可以。
2. 部分值为下拉框或者radio button的形式该如何设定html 。

评论区

jcdilon

2016-12-04 13:59

经过群内 大神指导。是自己的问题。已经解决。。user.getStr() 不用dao

JFinal

2016-12-04 14:04

上面代码没有得到正确的值是因为 arp.addMapping 的时候第二个参数弄错了,第二个参数是主键名,以 USERS 这张表为例,主键名是 "ID",所以应该是:
arp.addMapping("USERS", "ID", User.class);
通过上面的设置,getModel 工作就正常了

第一个问题:只需要设置部分值就可以,不用全设置
第二个问题:下拉框、radio 与普通的 input 输入框架是类似的,只要确保 name 属性值是正确的就可以,web 后端并不知道前端是什么输入组件,只认 parameter name = value ,具体在开发的时候,先尝试性的放上下拉框、radio这类东东,写好 name 属性值,然后提交后看控制台输出的 jfinal action report 就知道怎么继续了

热门反馈

扫码入社