Select Thymeleaf选择和标准生成器

Select Thymeleaf选择和标准生成器,select,thymeleaf,criteria-api,Select,Thymeleaf,Criteria Api,这是我想做的一件简单的事,但不知何故会引起一个复杂的问题。。我都快疯了 我想使用criteriabuilder比较我的Pages字段;获取所有小于的值,因此使用“le”表示数字(“lessThanOrEqualTo”在这里不起作用) 如何从Thymeleaf select发送整数,以便在未选中时不会将其添加到搜索标准生成器中 在select中,thymeleaf强制您将字符串“undefined”选项作为第一个选项。如果我使用Integer作为字段类型,它不会将这个“未定义”选项绑定到发布的模型

这是我想做的一件简单的事,但不知何故会引起一个复杂的问题。。我都快疯了

我想使用criteriabuilder比较我的Pages字段;获取所有小于的值,因此使用“le”表示数字(“lessThanOrEqualTo”在这里不起作用)

如何从Thymeleaf select发送整数,以便在未选中时不会将其添加到搜索标准生成器中

在select中,thymeleaf强制您将字符串“undefined”选项作为第一个选项。如果我使用Integer作为字段类型,它不会将这个“未定义”选项绑定到发布的模型,稍后我会从criteriabuilder中将其过滤掉。不过这里的数字还行。我需要它的工作,如果没有选择或未定义

如果我走另一条路,为页面选择一个字符串字段,那么它将不会被解析为。。。 le(表达式x,表达式y)

在CriteriaBuilder中。我不能转身

 b.get("pages") 
进入


Expression我通过检查表单中的Angularjs找到了解决方案

   $scope.processSearchForm = function() {

    var aData = $scope.bookData.author;
    var gData = $scope.bookData.genre;
    var pData = $scope.bookData.pages;

    if(typeof pData === 'undefined'){
        pData='0';
    }
如果它不存在,因此未定义/未选择,则将其设置为“0”

然后我用整数表示字段,显然是正确的方法。 它绑定到模型,并使用CriteriaBuilder从查询中筛选出0

约翰尼O

                        <select th:field="*{pages}"  ng-model="bookData.pages">
                        <option selected="selected" value="">  select an option  </option>
                        <option th:each="selectItem: ${refData.pages}"

                              th:value="${selectItem.value}" 
                              th:text="${selectItem.label}">Pages</option>
                        </select>


    List<Predicate> predList = new LinkedList<Predicate>();

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Book> c =cb.createQuery(Book.class);
    Root<Book> b = c.from(Book.class);



    if( (!pages.equals("")) && (!pages.equals("undefined")) ){
      predList.add(cb.lessThanOrEqualTo(b.get("pages"), pages));

    }
   $scope.processSearchForm = function() {

    var aData = $scope.bookData.author;
    var gData = $scope.bookData.genre;
    var pData = $scope.bookData.pages;

    if(typeof pData === 'undefined'){
        pData='0';
    }