Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Java的简单表单处理API_Java_Jquery_Ruby On Rails_Forms_Bean Validation - Fatal编程技术网

用于Java的简单表单处理API

用于Java的简单表单处理API,java,jquery,ruby-on-rails,forms,bean-validation,Java,Jquery,Ruby On Rails,Forms,Bean Validation,我正在寻找一个非常简单的Java表单处理API。假设表单输入字段对应于bean属性,并且所有bean都有javax.Validation注释,理想情况下API会: 将bean显示为html表单 使用请求参数填充bean,包括嵌套对象(如果适用) 使用验证注释验证输入 如果有错误,请在窗体顶部显示错误,并突出显示错误字段 此外: 如果我不必购买整个应用程序框架,那就太好了,因为我使用的是一个遗留应用程序 允许对更复杂的用例进行配置,但默认情况下只使用约定 奖金: 还生成javascrip

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

  • 将bean显示为html表单
  • 使用请求参数填充bean,包括嵌套对象(如果适用)
  • 使用验证注释验证输入
  • 如果有错误,请在窗体顶部显示错误,并突出显示错误字段
此外:

  • 如果我不必购买整个应用程序框架,那就太好了,因为我使用的是一个遗留应用程序
  • 允许对更复杂的用例进行配置,但默认情况下只使用约定
奖金:

  • 还生成javascript客户端验证
注意:如果这需要几个不同的库,也可以

更新:

因为我从来没有找到我想要的,而且迁移到Spring也不是一个选择,所以我继续前进,推出了我自己的解决方案。它被亲切地称为(松散地模仿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
}
SimpleValidator验证器=新的SimpleValidator();
if(“submit”.equals(request.getParameter(“submit”)){
映射错误=validator.validate(AccountForm.class,request.getParameterMap());
如果(错误!=null){
AccountForm account=validator.getMapper().toObject(AccountForm.class,request.getParameterMap());
//用有效帐户做些什么
}否则{
SimpleForm.validateAs(AccountForm.class).inRequest(请求).setErrors(错误);
//处理错误
}
}否则{
SimpleForm.validateAs(AccountForm.class).inRequest(请求);
//转发至formPage
}
这就是表单的外观,使用jQuery进行客户端验证(由提供):


我不认为您会发现一些具有大部分功能且不是框架的东西

我可以推荐SpringMVC——你可以很容易地将它插入到遗留应用程序中。它支持上述所有功能

自己动手也不会那么难:

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

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

我们通常不会像您上面要求的那样提供完整的解决方案。你为什么不开始开发你的“表单”,然后当你有更具体的编码问题时,我们可以帮助你更多?谢谢你的提议。。。实际上,我并不是在寻找编码帮助,而是在寻找一个可以直接插入.BeanUtils.populate(bean,request.getParameterMap())的现有解决方案。。。这是成功的一半。它是为String->Primitive->String提供股票转换器,还是您必须自己编写?不幸的是,编写HTML是我最感兴趣的另一件事,我不必自己动手!切记。我看到所有标准用例都有股票转换器,您可以根据需要创建自己的股票转换器。再次感谢!