现在我需要帮助设置变量。我有两个实体赛季和锦标赛,锦标赛属于赛季。现在我创建了一个赛季,我看到了这个赛季的列表。我在这里有一个按钮"选择",应该保存实际季节会话范围:
public String selectSezona(Sezona sezona){
this.sezona = sezona;
return "index";
}
现在我选择了一个赛季现在我想在这个赛季创建锦标赛但是我不想选择赛季所以我这样写:
<h:inputHidden value="#{turnaje.turnaj.setSezona(sezony.sezona)}" />
这是隐藏的输入文本,应该分配实际的赛季到这个锦标赛,但这是行不通的:(。错误是:javax.el. propertynotritableexception。我知道这个季节已经确定了,因为我看到了它的名字。如何解决这个问题?请帮助thx
编辑:锦标赛中也有getter和setter
@ManyToOne
private Sezona sezona;
public Sezona getSezona() {
return sezona;
}
public void setSezona(Sezona sezona) {
this.sezona = sezona;
}
但是为什么我要有方法setSezona没有参数
好吧,你有一个selectSezona(...)
方法,但没有setSezona(...)
。
实际上,隐藏字段需要一个属性作为它的值,而不是一个方法。您的setSezona(...)
没有返回任何东西,但是,JSF需要一种方法来获取初始值。因此,您需要将表达式更改为#{turnaje.turnaj.sezona}
。
您仍然会得到一个错误,因为JSF不能在String
和Sezona
之间进行转换,所以您还需要为隐藏字段提供一个转换器。