JSF + Primeryface как вывести данные на страницу

103
22 ноября 2021, 12:20

Пытаюсь вывести всех Pet на странице после регистрации пользователя,но не выводится ничего. Вопросы к знатокам:

1 здесь я создаю кнопку и поле для ввода имени

 <p:commandButton value="create pet" id="ajax" update="growl" action ="#{firstPage.buttonAction}"
                         styleClass="ui-priority-primary" />
            <h:inputText value="#{firstPage.petName}"/>

как мне сделать,чтобы при нажатии выводили все pet этого customer?

2 Должно ли быть все в одной форме? или нужно для каждого действия создавать новуб форму.

3 Я прочел про activity, но не могу понять, как его приминять для конкретной кнопки.

мой код

<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" action ="#{firstPage.buttonAction}"
                         styleClass="ui-priority-primary" />
            <h:inputText value="#{firstPage.petName}"/>
        <p:panel header="Pets" id="addedPets">
           <p:dataTable value="#{customer.pets}" var="pet">
               <p:column>
                   <h:column>
                       #{pet}
                   </h:column>
                   <h:outputText value="#{customer.id}">
                   </h:outputText>
               </p:column>
            </p:dataTable>
        </p:panel>
    </h:form>
</h:body>

сам бин

@Named
@ManagedBean
public class FirstPage {
    @EJB
    private PetManager petManager;
    private String petName;
    public String getPetName() {
        return petName;
    }
    public void setPetName(String petName) {
        this.petName = petName;
    }
    public PetManager getPetManager() {
        return petManager;
    }
    public void setPetManager(PetManager petManager) {
        this.petManager = petManager;
    }
    public void buttonAction(ActionEvent actionEvent) {
        petManager.createPet(FacesUtils.getUserId(), petName);
        System.out.println("Pet createt");
    }
}

класс для создании кнопки

  @Stateful
public class PetManager {
    @EJB
    private PetRepository petRepository;
    @EJB
    private CustomerRepository customerRepository;
    public void createPet(Integer customerId, String name) {
        Pet pet = petRepository.createPet(name);
        customerRepository.addPetToCustomer(customerId, pet);
    }
}

клиент

@Entity(name = "CUSTOMER")
@Named
public class Customer {
    public static final String FIND_BY_USERNAME_AND_PASSWORD = "findByUsernameAndPassword";
   /* @PersistenceContext
    private EntityManager entityManager;*/
    @Id
    @GeneratedValue
    private Integer id;
    @Column
    @Unique
    private String login;
    @Column
    private String password;
    @OneToMany
    private List<Pet> pets;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public List<Pet> getPets() {
     /*   List<Pet> pets = new ArrayList<>();
        Query query = em.createQuery("SELECT  pet FROM CUSTOMER");
        List<Customer> customerList = query.getResultList();
        for (Customer customer: customerList){
            pets.add((Pet) customer.getPets());
        }*/
    // Query query = entityManager.createQuery("  SELECT pets FROM CUSTOMER  ");
     //return  query.getResultList();
       return pets;
    }
    public void setPets(List<Pet> pets) {
        this.pets = pets;
    }
Answer 1
  <p:commandButton value="create pet" id="ajax" update="addedPets" actionListener ="#{firstPage.buttonAction}"
                         styleClass="ui-priority-primary" />
            <h:inputText value="#{firstPage.petName}"/>
        <p:panel header="Pets" id="addedPets">
           <p:dataTable value="#{firstPage.pets}" var="pet" >
               <p:column>
                   <h:outputText value="#{pet.name}" id="addPets" >
                   </h:outputText>
               </p:column>
            </p:dataTable>
        </p:panel>

а так же

 public void buttonAction(ActionEvent actionEvent) {
        petManager.createPet(FacesUtils.getUserId(), petName);
    }
    public Collection<Pet> getPets() {
        return customerManager.getPetsForCustomer(FacesUtils.getUserId());
    }
READ ALSO
ProgressBar 10 секунд

ProgressBar 10 секунд

Всем привет! Подскажите как заставить крутиться ProgressBar n секунд и затем перейти на новый activity ???

195
href задать значение

href задать значение

Всем доброго дняВопрос по JAVA Spring Boot Либо неправильно ищу, либо не знаю что ищу

222
Необходим совет по Service

Необходим совет по Service

У меня в приложении есть Service, который осуществляет запись звука(Foreground)

97
Как создать новый контакт со старым RAW_CONTACT_ID?

Как создать новый контакт со старым RAW_CONTACT_ID?

Имеется контакт на устройстве, после его удаления и восстановления, ему присваивается новый RAW_CONTACT_IDКаким образом можно присвоить ему старый?

160