gpt4 book ai didi

jsf - jsf中的继承

转载 作者:行者123 更新时间:2023-12-04 05:50:09 24 4
gpt4 key购买 nike

我想在 jsf 打印的 bean 中使用继承。
例如,我有一个父类(动物),有两个 child (猫和狗),具有不同的属性(catAttr 和 dogAttr)和鉴别器(类型)。我想打印一个包含所有属性的动物列表。
代码示例(它返回我一个未找到的属性异常),jsf 页面:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<ui:repeat value="#{animalsBean.animals}" var="a">
<!-- General attributes -->
<label>Name: </label> #{a.name}<br/>

<!-- Specific attributes -->
<h:panelGroup rendered="#{a.type eq 'cat'}">
<label>Cat attributes:</label>
<h:inputTextarea value="#{a.catAttr}"/><br/>
</h:panelGroup>
<h:panelGroup rendered="#{a.type eq 'dog'}">
<label>Dog attributes:</label>
<h:inputTextarea value="#{a.dogAttr}"/><br/>
</h:panelGroup>
</ui:repeat>
</h:body>

动物 bean :
@ManagedBean
@SessionScoped
public class AnimalsBean {
private List<Animal> animals;

public List<Animal> getAnimals() {
return animals;
}

public void setAnimals(List<Animal> animals) {
this.animals = animals;
}
}

有人能帮我吗?
谢谢!

最佳答案

JSF 标记组件无法识别模型类的内部类型(猫、狗等)。如果您使用的是父类,那么您只能使用它的公共(public)属性(对于所有子类都是通用的)。

public class Animal {
protected String name;
//getter and setter...
}

public class Cat extends Animal {
private String specie;
//getter and setter...
}

public class Dog extends Animal {
public String race;
//getter and setter...
}

@SessionScoped
@ManagedBean(name="animalBean")
public class AnimalsBean {
private Cat cat;
private Dog dog;
private Animal animal;

public AnimalsBean() {
cat = new Cat();
dog = new Dog();
animal = new Cat();
}

//getters and setters...
}

用于此的 xhtml 代码:
<h:form>
<h:inputText value="#{animalBean.cat.specie}" />
<h:inputText value="#{animalBean.dog.race}" />
<h:inputText value="#{animalBean.animal.name}" />
<!-- this line won't work -->
<h:inputText value="#{animalBean.animal.specie}" />
</h:form>

关于jsf - jsf中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10166606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com