首先:我是spring的初学者,这是我第一次尝试用spring MVC实现一个web应用程序。以下是我所做的:
实体:
@Entity
@Table(name = "coins")
public class Coin
{
@Id
@GeneratedValue
private Integer id;
@OneToOne
private Country country;
private double value;
private int year;
}
@Entity
@Table(name = "countries")
public class Country
{
@Id
@GeneratedValue
private Integer id;
private String name;
}
控制器:
@Controller
public class CoinViewController {
@Autowired
private CoinService service;
@Autowired
private CountryService countryService;
@ModelAttribute("countries")
public List<Country> frequencies() {
return countryService.get();
}
@RequestMapping(value = "/coins/add", method = RequestMethod.GET)
public String addCoin(Model model) {
model.addAttribute("coin", new Coin());
return "coins/add";
}
@RequestMapping(value = "/coins/add", method = RequestMethod.POST)
public String addCoinResult(@ModelAttribute("coin") Coin coin, BindingResult result) {
// TODO: POST HANDLING
return "/coins/add";
}
}
JSP:
<form:form action="add" method="POST" modelAttribute="coin">
<div class="form-group">
<label for="country">Country:</label>
<form:select path="country" class="form-control" >
<form:option value="" label="-- Choose one--" />
<form:options items="${countries}" itemValue="id" itemLabel="name" />
</form:select>
</div>
<div class="form-group">
<label for="value">Value:</label>
<form:input path="value" class="form-control" />
</div>
<div class="form-group">
<label for="year">Year:</label>
<form:input path="year" class="form-control" />
</div>
<button type="submit" value="submit" class="btn btn-default">Erstellen</button>
</form:form>
但是当我试图保存JSP的输入时,我总是得到这样的结果:
字段“country”上对象“coin”中的字段错误:拒绝值[1];代码[TypeMismatch.Coin.Country,TypeMismatch.Country,TypeMismatch.Country,TypeMismatch.Country,参数[org.springframework.context.support.defaultmessageSourceResolvable:代码[coin.country,country];参数[];default message[country]];默认消息[无法将类型为“java.lang.String”的属性值转换为属性“Country”的必需类型“Country”;嵌套异常为java.lang.IllegalStateException:无法将类型为[java.lang.String]的值转换为属性“Country”的必需类型[Country]:找不到匹配的编辑器或转换策略]
所以我的问题是:
可以将自定义编辑器注册到controller类的initBinder中:
@Controller
public class CoinViewController {
@Autowired
private CountryEditor countryEditor;
@InitBinder
protected void initBinder(final WebDataBinder binder, final Locale locale) {
binder.registerCustomEditor(Country.class, countryEditor);
}
......
}
(在这种情况下不需要locale
参数,但如果您需要区域设置来进行转换(例如,如果您正在处理日期),则该参数会很有用)
您可以定义CountryEditor
,如下所示:
@Component
public class CountryEditor extends PropertyEditorSupport {
@Autowired
private CountryService countryService;
@Override
public void setAsText(final String text) throws IllegalArgumentException {
try{
final Country country = countryService.findById(Long.parseLong(text));
setValue(cliente);
}catch(Exception e){
setValue(country);
// or handle your exception
}
}
}
我让spring用@component
注释处理编辑器的注入。因此,如果您喜欢这样做,请记住为该类启用包扫描!
希望能有所帮助!
表单是让用户与我们的网页应用程序交互的基本元素。Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包。这个包使得定义表单和处理提交容易一些。 Flask-WTF 我们想要使用 Flask-WTF 做的第一件事情(在安装它以后)就是在 myapp.forms 包中定义一个表单。 # ourapp/forms.py
我正在尝试将一个jsp表单放入fancybox,我的站点功能正常,所以我知道我的大部分配置都是正确的。我还做了一个图像的样例测试,它工作得很好,但是对于一个表单,我有问题。下面是代码:
我们已经看到,可以在URL规则中指定http方法。URL映射的函数接收到的表单数据可以以字典对象的形式收集,并将其转发给模板以在相应的网页上呈现它。 在以下示例中,URL => 呈现具有表单的网页(student.html)。填充的数据会提交到触发函数的URL => 中。 函数收集字典对象中中存在的表单数据,并将其发送给result.html 并显示出来。 该模板动态呈现表单数据的HTML表格。
主要内容:在视图中使用表单在Django创建表单,类似于创建一个模型。 在这里,我们只需要从Django的类并继承此类属性表单字段。让我们在myapp文件夹中添加forms.py文件包含我们的应用程序的表单。我们将创建一个登录表单。 myapp/forms.py 由上可见,字段类型可以利用“widget”的参数到HTML渲染; 在我们的例子中,我们要隐藏密码,不会显示。在我们的例子中,想要隐藏密码而不用显示。 日期输入是D
我在处理我的联系方式时遇到了麻烦,虽然是一个简单的联系方式。我花了很多时间试图找出我的代码出了什么问题,但一直没有找到解决办法。我的对象没有接收数据。我有以下例外情况: 执行INSERT INTO联系人(电子邮件、姓名、消息、日期)VALUES时发生异常 (?, ?, ?, ?)'用参数[null, null, null,"2016-09-19 00:08:48"]: SQLSTATE[23000
我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理。浏览器中使用 GET 和 POST 方法向服务器提交数据。 GET 方法 GET方法将请求的编码信息添加在网址后面,网址与编码信息通过"?"号分隔。如下所示: http://www.runoob.com/hello?key1=value1&key2=value2 GET方法是浏览器默认传递参数的方法,一些敏感信息,如密码等建议不使用