Я где-то читал, что лучше использовать CDI @Named
вместо JSF @ManagedBean
, из-за CDI, поэтому я пытаюсь преобразовать часть своего кода. Я пытаюсь использовать @Named
в JSF, но это всегда недостижимо. При использовании @ManagedBean
проблем не возникло.Как сформировать @Named Backing Bean в JSF
Я использую его как @ManagedBean
, как показано ниже
CustomerBacking.java
package com.wordpress.marczykm.backing;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named("customer")
@RequestScoped
public class CustomerBacking {
@EJB
private CustomerService customerService;
public CustomerBacking() {
}
public String addCustomer(Customer customer) {
customerService.addCustomer(customer);
return "customer_overview";
}
public Customer getCustomer(){
return customerService.getCustomer();
}
}
index.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>EJB 3.0 Test</title>
</h:head>
<h:body>
<h:outputText value="#{customer.firstname}"/>
<h:form>
<h:outputText value="Imię"/>
<h:inputText id="firstname" name="firstname" value="#{customer.firstname}" /><br/>
<h:outputText value="Nazwisko"/>
<h:inputText id="lastname" name="lastname" value="#{customer.lastname}" /><br/>
<h:commandButton value="Dodaj" actionListener="#{customer.addCustomer}"/>
</h:form>
</h:body>
</html>
У вас есть смешанные пространства имен JSF и CDI. Попробуйте вместо этого импортировать javax.enterprise.context.RequestScoped'. Также ваш код бэк-кода и xhtml не совпадают, но я предполагаю, что это ошибка копирования и вставки. – mabi
ОК, я отредактировал код (изменился на правильный оператор импорта и изменил аннотацию на '@Named (« customer »)), но все же после нажатия CommandButton у меня есть __Target Unreachable, идентификатор« клиент »разрешен для ошибки null__ –
Как именно вы установили/включили CDI в своей среде? Он по умолчанию отключен и на некоторых серверах (например, Tomcat) даже по умолчанию не установлен. – BalusC