Вопрос по managed-bean, jsf-2, jsf – Управляемый компонент не создан

1

Мой управляемый компонент JSF не создается, когда я попадаю на страницу.

Это мое лицо:

            
                #{product.description}
                #{product.price}
                #{product.categoryName}
                
                    
                        
                    
                


            

Это мой ProductsBean:

@ManagedBean(eager=true)
@RequestScoped
public class ProductsBean implements Serializable{

    private List producten; //+getter
    @ManagedProperty(value = "#{applicationBean}")
    private ApplicationBean applicationBean;

    public ProductsBean() {

        Store store = applicationBean.getStore();

        for (String c : store.getCategories()) {
            for(be.kdg.shop.model.stock.Product p : store.getProductsOfCategory(c)){
                ProductBean product = new ProductBean();
                product.setProduct_id(p.getProduct_id());
                product.setDescription(p.getDescription());
                product.setCategoryName(p.getCategoryName());
                product.setPrice(p.getPrice());
            producten.add(product);
            }

        }
....

Когда я использую# {} ProductsBean.producten» мой JavaBean должен инициализироваться, но это не такт. Когда я отлаживаю свой код, я неT добраться до конструктора.

Щелкните правой кнопкой мыши страницу в браузере и сделайтеПросмотреть исходный код, Что ты видишь? Вы видите сгенерированный JSF HTML-код или все еще видите необработанный исходный код JSF? BalusC
Я отправил ответ. Я'Вы также отредактировали ваш слишком общий термин "JavaBean» в вопросе, чтобы быть более специфичным для JSF "управляемый боб ", В обычном веб-приложении Java EE есть много разных типов javabeans. BalusC
Я вижу еще сырой исходный код JSF. user1939400

Ваш Ответ

2   ответа
0

Прежде всего, (eager = true) работает только с@ApplicationScoped управляемые bean-компоненты и означают, что bean-компонент будет создан при инициализации приложения, поэтому в этом случае его следует удалить.

Я предлагаю вам проверить, что у атрибута producten есть метод getter, потому что вы нене указывайте это в своем коде. Также вы можете попробовать с другими областями, как.@ViewScoped

1

Я вижу еще сырой исходный код JSF.

Ваш HTTP-запрос не попал вFacesServlet совсем. Это'Ответственный за выполнение всех работ JSF, таких как создание управляемых bean-компонентов и генерация HTML.

Убедитесь, что URL-адрес вашего HTTP-запроса соответствует изFacesServlet как настроено в веб-приложенияweb.xml, Если это например*.jsf, то вы должны открыть страницу/products.jsf вместо ./products.xhtml

Кроме того, вы также можете просто изменить изFacesServlet в*.xhtml, так что вам никогда не нужно возиться с виртуальными URL. Ранее в JSF 1.x это раньше заканчивалось бесконечным циклом, вызывающим себя каждый раз, но, начиная с JSF 2.x, это больше не происходит и должно работать нормально.


    facesServlet
    javax.faces.webapp.FacesServlet


    facesServlet
    *.xhtml

Смотрите также:Наша вики-страница JSF - содержит Hello World и несколько ссылок на разумные урокиJSF Facelets: иногда я вижу URL-адрес .jsf, а иногда и .xhtml. Зачем?

Похожие вопросы