我犯了一个让我发疯的奇怪错误。我有一个控制器,它有两个不同的Get方法,用于两个不同的url映射。URL1工作得非常好,我明白URL2的作用
[THYMELEAF][http-nio-8080-exec-3]异常处理模板“QuestionnaReform”:处理器组织执行期间出错。百里香。标准加工机attr。java导致的StandardEachAttrProcessor(问题:10)。lang.NullPointerException:在组织中为null。百里香。上下文WebSessionVariablesMap。hashCode(WebSessionVariablesMap.java:276)~[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE]
经过几个小时的检查每一行,很明显,我的控制器获取方法在调用视图之前向Model.add属性添加了一个非空对象。我还从模板中删除了所有代码,并添加了以下内容进行故障排除:
<tr th:each="var : ${#vars}">
<td th:text="${var.key}"></td>
<td th:text="${var.value}"></td>
这也返回了相同的空错误!我在网上唯一能找到的就是Thymeleaf2.1的一个bug。4这是由于没有HttpSession对象造成的https://github.com/thymeleaf/thymeleaf/issues/349
但话说回来,我的URL1工作正常!我没有在这里发布任何代码,因为我不知道还有什么可以发布,请询问!
编辑:添加了控制器代码。/admin/问题
是正常工作的URL1,'/admin/问卷'是不工作的URL2。
@Controller
public class AdminController {
private QuestionRepository questionRepository;
private EQuestionnaireRepository eQuestionnaireRepository;
private EQuestionnaire eQuestionnaire;
@Autowired
public AdminController(QuestionRepository questionRepository,
EQuestionnaireRepository
eQuestionnaireRepository){
this.questionRepository = questionRepository;
this.eQuestionnaireRepository = eQuestionnaireRepository;
eQuestionnaire = eQuestionnaireRepository.findAll().get(0);
}
@RequestMapping(value = "/admin/questions", method=RequestMethod.GET)
public String questionForm(Model model) {
model.addAttribute("question", new Question());
return "questionForm";
}//-->This Works fine
@RequestMapping(value = "/admin/questions", method=RequestMethod.POST)
public String saveQuestion(@ModelAttribute Question newQuestion, BindingResult bindingResult, Model model) {
if( bindingResult.hasErrors())
{
System.out.println(bindingResult);
System.out.println("BINDING RESULTS ERROR");
return "questionForm";
}
questionRepository.save(newQuestion);
return "questionForm";
}
@RequestMapping(value = "/admin/Questionnaires", method=RequestMethod.GET)
public String QuestionnaireForm(Model model){
model.addAttribute("ListofQ",eQuestionnaire.getQuestionList());
return "questionnaireForm";
更新:我换到了thymeleaf 2.1.5-SNAPSHOT,现在我没有得到前面提到的错误-但是一个不同的错误:
There was an unexpected error (type=Internal Server Error, status=500).
Exception evaluating SpringEL expression: "ask.questionText"
(questionnaireForm:13)
现在,模板中的对象引用为null。当我把它放到模型中时,它不是空的(我已经在GET方法中的getQuestionText方法中找到System.out,所以这是确定的),这是我在模板中尝试的简单代码:
<table>
<tr th:each= "ask : ${ListofQ}"></tr>
<tr th:text= "${ask.questionText}"></tr>
</table>
问题是:
@Entity
@Table(name = "Questions")
public class Question {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long ID;
private int sequence;
private String questionText;
private int weightage;
private String option1 = "option1";
private String option2 = "option2";
private String option3 = "option3";
public Question() {
}
public Long getID() {
return ID;
}
public void setID(Long iD) {
ID = iD;
}
public int getSequence() {
return sequence;
}
public void setSequence(int sequence) {
if (sequence > 0) this.sequence = sequence;
}
public String getQuestionText() {
return questionText;
}
public void setQuestionText(String questionText) {
this.questionText = questionText;
}
public int getWeightage() {
return weightage;
}
public void setWeightage(int weightage) {
this.weightage = weightage;
}
public void setOption1(String option1) {
this.option1 = option1;
}
public void setOption2(String option2) {
this.option2 = option2;
}
public void setOption3(String option3) {
this.option3 = option3;
}
public String getOption1() {
return option1;
}
public String getOption2() {
return option2;
}
public String getOption3() {
return option3;
}
您没有将模型对象返回给Thymeleaf。
试着这样做:
@RequestMapping(value = "/admin/Questionnaires", method=RequestMethod.GET)
public ModelAndView QuestionnaireForm(Model model){
return return new ModelAndView("questionnaireForm", "ListofQ",eQuestionnaire.getQuestionList());
}
“each”中的输出需要在同一个语句中,我认为这将适合您
<table>
<tr th:each= "ask : ${ListofQ}" th:text= "${ask.questionText}"></tr>
</table>
我有一个具有登录功能的控制器类。当我输入用户名和密码并按submit时,它将调用此控制器并在会话中存储客户信息。但有一件事让我感到困惑,那就是@model属性 我将使用@ModelAttribute Customer存储我输入的用户名和密码,并使用Customer c存储我从customService获得的所有信息,并将其存储到会话中。但是会话存储的是客户。 如果我这样改变论点。它工作正常
模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置)。 类型 受支持的类型是: text:文本字符串; number:浮点数。你可以指定size为2 | 4 | 8; integer:整数。你可以指定size为2 | 4 | 8; boolean:true或false的值; date:日期对象。你可以指定time为true; enum:一个备选列表
以前我使用过的ORM将数据库列直接映射到类属性,这允许您查看特定的属性可见性,就像您通常会限制对某些属性(例如密码)的访问一样。 有了雄辩,我似乎无法复制这一点,因为数据库列映射到不包含可见性的内部属性数组。 我的愿望是将用户密码的访问范围仅限于对象,即私有。 设置具有可见性的类属性不起作用,因为该属性超出了雄辩模型属性的范围,因此该属性未映射到列。 雄辩的$隐藏和$保护属性不起作用,因为它们处理
As we learned earlier in the book, the validate method on a Model is called before set and save, and is passed the model attributes updated with the values from these methods. By default, where we def
我在videorequest应用程序中制作简单模型 当我试图运行python manage时,代码cmd中显示了什么错误。py运行服务器查询 由启动的线程中存在未处理的异常。0x0446E7C8处的包装器
英文原文:http://emberjs.com/guides/object-model/computed-properties/ 什么是计算属性? 简单地来说,计算属性就是将函数声明为属性。通过定义一个如同函数一般的计算属性,Ember将会自动调用该函数来获取计算属性的值,此后就可以如同使用普通静态属性一样来使用计算属性。 在需要使用一个或者多个属性的变形,或者手动修改其数据的时候非常有用。 计算