jsf обработать кнопку

293
16 ноября 2021, 05:40

Не погу понять, как сделать,чтобы при нажатии кнопки create pet можно было создать Pet

<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
    <h1>Hello World</h1>
    <h:form>
        <p:growl id="growl" life="2000"/>
        <p:commandButton value="create pet" id="ajax" update="growl" actionListener="#{firstPage.buttonAction}"
                         styleClass="ui-priority-primary"/>

    </h:form>
</h:body>
</html>

сам класс Pet

@Entity(name = "PET")
public class Pet {
    @Id
    @GeneratedValue
    private Integer id;
    @Column
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @OneToMany (mappedBy="pets", fetch= FetchType.EAGER)
    private Collection<Treatment> treatments;
    public Collection<Treatment> getTreatments() {
        return treatments;
    }
}

этот класс тоже нужен

public class FirstPage {
    @EJB
    private PetManager petManager;
    public void buttonAction(ActionEvent actionEvent) {
        petManager.createPet(FacesUtils.getUserId(), "NOT IMPLEMENTED YET");
    }
}
Answer 1

Вы используете выражение:

actionListener="#{firstPage.buttonAction}"

Но ваш класс FirstPage никак не привязан к faces контексту. Чтобы привязать укажите над классом FirstPage следующие аннотации (первая привязывает к контексту, вторая определяет видимость бина):

@ManagedBean(name = "firstPage", eager = true)
@RequestScoped
public class FirstPage {

Если же вы используете несвежий jsf (версии < 2) то тогда вместо аннотаций вам необходимо прописать строки в faces-context.xml.

Кроме того в вашем примере посоветовал бы использовать action вместо actionListener.

READ ALSO
Взаимодействие C# и Java

Взаимодействие C# и Java

Мне нужно реализовать сетевое взаимодействие приложений на Android (Java) и Windows (C#)Я испытываю трудности с написанием серилизатора на разных языках...

233
Как найти дубликаты Bitmap в списке объектов?

Как найти дубликаты Bitmap в списке объектов?

Есть большой массив объектов BitmapНужно пройтись по каждому элементу и создать отдельный список где каждый дубликат будет отсортирован

169
Задание не проходит, просьба пояснить, почему

Задание не проходит, просьба пояснить, почему

Напишите класс Vector2D (вектор на плоскости)

141
Блок Html in JSP как тег

Блок Html in JSP как тег

Задача в проекте создать свой тег в jsp

178