我的项目基于spring boot,Thymeleaf,mysql,html和Jquery。
我的方案 是获取列表迭代并在HTML的表格第1列中显示数据并发布从动态输入字段获取的数据(html-chargesName和输入量)并将其保存到相关列中,因此需要热门春季启动@RestController。
但是我得到的是Thymeleaf ERROR
org.springframework.expression.spel.SpelEvaluationException:EL1007E: 财产或字段' chargeName'在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>
&#13;
@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
@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;
答案 0 :(得分:1)
您使用了html页面顶部的表单:
<form method="post" th:object="${entSetCharges}" th:action="@{/updatesetcharges}">
th:field="*{chargesName}
绑定到th:object="${entSetCharges}
内的对象/ bean。这意味着您正在chargesName
对象中搜索不存在或为空的entSetCharges
字段。
<强>解决方案:强>
可能会将 th:field="*{chargesName}"
更改为${savedcharges.chargesName}
表达式以访问对象的字段。
尝试在返回行上方添加respondResult.addObject("entSetCharges",new EntSetCharges());
。您的观点不会自动为您创建此对象。
答案 1 :(得分:0)
我初始化实体对象,如 respondResult.addObject(“entSetCharges”,new EntSetCharges());
@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);
respondResult.addObject("entSetCharges",new EntSetCharges());
}
else
{
respondResult.addObject("savedchargeslist",new ArrayList<>());
}
} catch (Exception e) {
// TODO: handle exception
}
return respondResult;
}