hibernate - org.springframework.expression.spel.SpelEvaluationException : EL1007E: Property or field 'chargesName' cannot be found on null

标签 hibernate spring-boot spring-data-jpa thymeleaf

My project based on spring boot,Thymeleaf,mysql,html and Jquery.

我的场景 是获取列表迭代并在 HTML 中显示表第一列中的数据,并发布从动态输入字段获取的数据(html-chargesName 和输入金额)并将其保存到相关列中,因此需要热门 Spring Boot @RestController。

但是我遇到了 Thymeleaf 错误,例如

org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'chargesName' cannot be found on null

这是完整代码...

/**
 * 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;

最佳答案

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

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

th:field="*{chargesName} 绑定(bind)到 th:object="${entSetCharges} 内的对象/bean。这意味着您正在 entSetCharges 对象中搜索不存在或为 null 的 chargesName 字段。

解决方案:

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

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

关于hibernate - org.springframework.expression.spel.SpelEvaluationException : EL1007E: Property or field 'chargesName' cannot be found on null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47406346/

相关文章:

java - 通过 intellij hibernate 持久化工具生成模型时关系引用禁用表

java - Spring Boot JPA 应用程序无法从 Spring Boot 2.0.2 启动,但可以在 Spring Boot 1.5.13 中正常运行

java - 在 Spring Data JPA 中获取父实体列表以及经过过滤的子实体集合

java - 如何验证 Spring Data 填充的 Controller 输入中的域对象?

java - 在 Hibernate 中保存实例时出现 SQL 错误

java - 无法获得连接 : general error

java - 如何在 Cucumber 步骤实现中 @Autowire REST 服务类(Spring boot)?

java - Spring 执行器即使设置server.servlet.contextPath后也会显示404 Not found错误

spring - 来自组合 Spring 数据规范的查询在同一个表上有多个连接

java - 如何使用 Spring、Hibernate、MySQL ISAM 进行事务处理?