gpt4 book ai didi

java - Java 的简单表单处理 API

转载 作者:行者123 更新时间:2023-12-01 15:48:36 25 4
gpt4 key购买 nike

我正在寻找一个非常简单的 Java 表单处理 API。假设表单输入字段对应于 bean 属性,并且所有 bean 都有 javax.Validation 注释,理想情况下 API 会:

  • 将 bean 显示为 html 表单
  • 使用请求参数填充 Bean,包括适用的嵌套对象
  • 使用验证注释验证输入
  • 如果出现错误,请在表单顶部显示错误,并突出显示错误字段。

另外:

  • 如果我不必购买整个应用程序框架,那就太好了,因为我正在使用旧版应用程序。
  • 允许配置更复杂的用例,但默认情况下仅使用约定。

奖金:

  • 也生成 JavaScript 客户端验证。

注意:如果这需要多个不同的库,那也没关系。

更新:

由于我从未找到我想要的东西,并且迁移到 Spring 也不是一个选择,所以我继续推出自己的解决方案。它被亲切地称为java in jails (大致模仿 rails 形式处理)。它为您提供了非常简单(而且漂亮)的表单创建、客户端和服务器端验证以及请求参数到对象的映射。无需配置。

示例 Bean:

public class AccountForm {
@NotBlank(groups = RequiredChecks.class)
@Size(min = 2, max = 25)
private String name;
//...
}

表格示例:

<%@ taglib uri="http://org.jails.org/form/taglib" prefix="s" %>
<s:form name="accountForm" action="/jails-demo/jails" label="Your Account Details" style="side">
<s:text name="name" label="Name" size="25" />
<s:text name="accountName" label="Account Name" size="15" />
...
</s:form>

示例验证和映射:

SimpleValidator validator = new SimpleValidator();

if ("submit".equals(request.getParameter("submit"))) {
Map<String, List<String>> errors = validator.validate(AccountForm.class, request.getParameterMap());

if (errors != null) {
AccountForm account = validator.getMapper().toObject(AccountForm.class, request.getParameterMap());
//do something with valid account
} else {
SimpleForm.validateAs(AccountForm.class).inRequest(request).setErrors(errors);
//handle error
}
} else {
SimpleForm.validateAs(AccountForm.class).inRequest(request);
//forward to formPage
}

这就是表单的样子,使用 jQuery 进行客户端验证(由 Position Absolute 提供):

enter image description here

最佳答案

我认为您不会找到具有大部分此功能且不是框架的东西。

我可以推荐 Spring MVC - 您可以轻松地将其插入旧应用程序中。它支持以上所有内容。

自己动手也不会那么难:

  • 使用 BeanUtils.populate(bean, request.getParameterMap()) 用请求参数填充您的对象
  • 手动使用javax.validation.* - here is how 。为每个错误添加请求属性,您稍后可以将其显示为错误。

请注意,无论哪种方式,您都必须手动编写 html 代码。

关于java - Java 的简单表单处理 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com