将隐藏变量设置为实体

时间:2011-07-07 10:54:17

标签: java jsf

现在我需要设置变量的帮助。 我有两个实体赛季和锦标赛,锦标赛属于赛季。 所以现在我创造了一个赛季,我看到了本赛季的名单。我这里有一个“选择”按钮,可以将实际季节保存到会话范围:

public String selectSezona(Sezona sezona){
        this.sezona = sezona;
        return "index";
    }

所以现在我选择了一个赛季,现在我想在本赛季创造锦标赛,但我不想选择赛季,所以我写这个:

<h:inputHidden value="#{turnaje.turnaj.setSezona(sezony.sezona)}" />

这是隐藏的输入文本,应该为本次锦标赛分配实际赛季,但这不会起作用:(。错误是:javax.el.PropertyNotWritableException。我看到那个赛季已经设定,因为我看到了它的名字。如何看待这个问题?请帮忙 THX

编辑:

我也在锦标赛中有吸气剂和制定者

@ManyToOne
private Sezona sezona;

public Sezona getSezona() {
        return sezona;
    }

    public void setSezona(Sezona sezona) {
        this.sezona = sezona;
    }

但为什么我应该没有参数的方法setSezona?

1 个答案:

答案 0 :(得分:2)

嗯,您有一个selectSezona(...)方法,但不是setSezona(...)

事实上,您的隐藏字段需要一个属性作为其值,而不是方法。 你的setSezona(...)没有返回任何内容,但是,JSF需要一种获取初始值的方法。 因此,您需要将表达式更改为#{turnaje.turnaj.sezona}

您仍然会收到错误,因为JSF无法在StringSezona之间进行转换,因此您还需要为隐藏字段提供转换器。