0
我想創建一個帶有JPA後端的JSF表單。這個類的結構很大程度上依賴於繼承。 我試圖讓JSF表單是模塊化的,所以我可以根據所創建對象的類別包含不同的部分。現在我偶然發現了我需要子類的控制器來設置所有數據的問題。所以我期望首先將控制器標識符設置爲變量,然後包含超類的表單部分(以及超類的表單部分等等)JSF控制器作爲變量
(包含代碼尚未包含)
<h:body>
<h:form>
<h1><h:outputText value="Make FieldPlayer"/></h1>
<h:panelGrid columns="2">
<c:set var="controller" value="#{fieldPlayerController}" scope="request" />
<h:outputLabel value="Name:" for="naam" />
<h:inputText id="naam" value="#{controller.fieldPlayer.name}" title="Naam" />
<h:outputLabel value="Birthday:" for="prijs" />
<h:inputText id="prijs" value="#{controller.birthday}" title="Prijs"/>
<h:commandButton value="save" action="#{controller.add()}"></h:commandButton>
</h:panelGrid>
</h:form>
</h:body>
但我發現了以下錯誤: /add_fieldPlayer.xhtml @ 17,94值= 「#{} controller.fieldPlayer.name」:目標不可達,標識符 '控制器' 解析爲空
我是否在某處出錯?或者不能將控制器設置爲變量?
控制器代碼:
@Named(value = "fieldPlayerController")
@SessionScoped
public class FieldPlayerController extends PlayerController<FieldPlayer> {
public FieldPlayerController() {
super(FieldPlayer.class);
}
}
@Named(value = "playerController")
@Dependent
public abstract class PlayerController<T> implements Serializable {
@EJB
private AbstractFacade<T> facade;
private T player;
public PlayerController(Class<T> entityClass) {
try {
this.player = entityClass.newInstance();
} catch (InstantiationException | IllegalAccessException ex) {
Logger.getLogger(PlayerController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public T getPlayer() {
return player;
}
public void setPlayer(T p) {
this.player = p;
}
public List<T> findAll() {
return this.facade.findAll();
}
public String add() throws ParseException {
this.facade.create(player);
try {
this.player = (T) player.getClass().newInstance();
} catch (InstantiationException | IllegalAccessException ex) {
Logger.getLogger(PlayerController.class.getName()).log(Level.SEVERE, null, ex);
}
return "index";
}
...
在此先感謝
你應該張貼您的控制器代碼也是如此。 –