小编典典

org.springframework.expression.spel.SpelEvaluationException:EL1007E:在null上找不到属性或字段“ chargesName”

spring-boot

我的项目基于spring boot,Thymeleaf,mysql,html和Jquery。

我的情况 是获取列表进行迭代,并在HTML的表1st列中显示数据,然后发布从动态输入字段获取的数据(html-
chargesName和输入金额)并将其保存到相关列中,因此它将需要打Spring Boot@RestController。

但是我得到了Thymeleaf错误

org.springframework.expression.spel.SpelEvaluationException:EL1007E:在null上找不到属性或字段“
chargesName”

这是完整代码…

/**

 * This is for set charges form

 */



$(document).ready(function() {

     $("select").change(function()

             {

            var amttype = $(this).val();

            if (amttype == 1)

            {

              $("#amt1").show();

              $("#amt2").hide();

              $("#amt3").hide();



            }

            else if (amttype == 2)

            {

                  $("#amt1").hide();

                  $("#amt2").show();

                  $("#amt3").hide();

            }

            else if (amttype == 3)

            {

                  $("#amt1").hide();

                  $("#amt2").hide();

                  $("#amt3").show();

            }

            else {

                  $("#amt1").hide();

                  $("#amt2").hide();

                  $("#amt3").hide();

            }



          });



});


    <!DOCTYPE html>

    <html xmlns:th="http://www.thymeleaf.org">

    <head>

    <meta charset="ISO-8859-1">

    <title>Insert title here</title>

     <!-- bootstrap css lib -->

          <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

    </head>

    <body>

        <!-- Bootstrap/Jquery CDN library files -->

        <script src="https://code.jquery.com/jquery-3.2.1.js"></script>

        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

        <!-- External JQuery Script -->

        <script type="text/javascript" src="../js/formjs/setchargesform.js"></script>



    <!-- Body Content Goes Here -->

         <div class="container">

        <form method="post" th:object="${entSetCharges}" th:action="@{/updatesetcharges}">

        <div class="table-responsive">



        <table class="table table-hover">

        <thead>

            <tr>

          <th>Charge Name</th>

          <th>Amount</th>

          <th>Charge/Unit Type</th>

        </tr>

        </thead>



        <tbody>

        <tr th:each="savedcharges:${savedchargeslist}">

          <td>

          <label th:text="${savedcharges.chargesName}" th:value="${savedcharges.chargesName}" th:field="*{chargesName}"></label>

          </td>



          <td>

          <input id="amt1" class="form-control" th:field="*{perFlat}">

          <input id="amt2" class="form-control" th:field="*{perUnit}">

          <input id="amt3" class="form-control" th:field="*{perSqrft}">

          </td>



          <td>

            <select id="societyname" class="form-control" th:field="*{tempunitType}">

            <option value="1" selected="selected">perFlat</option>

            <option value="2">perUnit</option>

            <option value="3">perSqrft</option>

            </select>

          </td>

        </tr>

        </tbody>



        </table>

        </div>



        <button type="submit" class="btn btn-info">Submit</button>

        <button type="reset" class="btn btn-warn">Reset</button>

        </form>

        </div>

        <!-- Body content finishes -->

    </body>

    </html>

@RestController

@GetMapping(value="/setchargeslist")
    public ModelAndView doGetSetchargesList()
    {
        List<EntSetCharges> listCharges = new ArrayList<>();
        ModelAndView respondResult = new ModelAndView("SetCharges");
        try {
            /*Get the set charges list*/
            listCharges = serSetCharges.doGetSetChargesList();
            if(listCharges!=null)
            {
            respondResult.addObject("savedchargeslist",listCharges);
            }
            else
            {
                respondResult.addObject("savedchargeslist",new ArrayList<>());
            }

        } catch (Exception e) {
            // TODO: handle exception
        }
        return respondResult;
    }

实体

@Entity
@Table(name="setcharges")
public class EntSetCharges implements Serializable
{

    /**
     * 
     */
    private static final long serialVersionUID = 3827507518731160293L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="pksetcharges")
    private int pkSetCharges;

    @Column(nullable=false)
    private String chargesName;
    @ColumnDefault("0")
    private int perFlat;
    @ColumnDefault("0")
    private double perUnit;
    @ColumnDefault("0")
    private double perSqrft;

    @Version
    private int version;
    private Boolean is_active;
    private String created_by;
    private Date created_ts;
    private String modified_by;
    private Date modified_ts;
    private String approved_by;
    private Date approved_ts;

阅读 1936

收藏
2020-05-30

共1个答案

小编典典

您使用了html页面顶部的表单:

<form method="post" th:object="${entSetCharges}" th:action="@{/updatesetcharges}">

th:field="*{chargesName}被绑定到您的内部对象/豆
th:object="${entSetCharges}。这意味着您正在搜索对象内不存在或为空的chargesName字段entSetCharges

解:

  • 也许将您th:field="*{chargesName}"${savedcharges.chargesName}表达式更改为访问对象的字段。

  • 尝试respondResult.addObject("entSetCharges",new EntSetCharges());在返回行上方添加。您的视图 不会 自动为您创建此对象。

2020-05-30