У меня проблема с передачей данных из таблицы данных, которая заполняется из базы данных в диалоговое окно для редактирования значений.
izmenaPredmeta.xhtml
<?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://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Obrada predmeta</title>
</h:head>
<h:body>
<center>
<h:form>
<p:growl id="msgs" showDetail="true"/>
<h:dataTable var="list" value="#{pred.getPredmets()}" border="1" cellpadding="3" cellspacing="3" bgcolor="lightgray">
<h:column>
<f:facet name="header">Naziv</f:facet>
<h:outputText value="#{list.naziv}"/>
</h:column>
<h:column>
<f:facet name="header">Akronim</f:facet>
<h:outputText value="#{list.akronim}"/>
</h:column>
<h:column>
<f:facet name="header">Semestar</f:facet>
<h:outputText value="#{list.semestar}"/>
</h:column>
<h:column>
<f:facet name="header">Godina</f:facet>
<h:outputText value="#{list.god}"/>
</h:column>
<h:column>
<f:facet name="header">Odsek</f:facet>
<h:outputText value="#{list.odsek}"/>
</h:column>
<h:column>
<f:facet name="header">Aktivan</f:facet>
<h:outputText value="#{list.drzise}"/>
</h:column>
<h:column>
<f:facet name="header">Edit</f:facet>
<h:commandButton value="Edit" action="#{pred.edit()}" onclick="PF('dlg3').show();">
<f:param name="idp" value="#{list.idpred}"/>
</h:commandButton>
<p:dialog header="Edit" widgetVar="dlg3" showEffect="explode" hideEffect="bounce" height="350">
<h:panelGrid id="panel" columns="2" cellpadding="5" border="1" bgcolor="gray">
<h:outputText value="Naziv"/>
<p:inputText style="width: 97%" value="#{pred.naziv}" required="true" requiredMessage="Naziv je obavezan"/>
<h:outputText value="Akronim"/>
<p:inputText style="width: 97%" value="#{pred.akronim}" required="true" requiredMessage="Akronim je obavezan"/>
<h:outputText value="Semestar"/>
<p:inputText style="width: 97%" value="#{pred.semestar}" required="true" requiredMessage="Semestar je obavezan"/>
<h:outputText value="Godina"/>
<p:inputText style="width: 97%" value="#{pred.god}" required="true" requiredMessage="Godina je obavezna"/>
<h:outputText value="Odsek"/>
<p:inputText style="width: 97%" value="#{pred.odsek}" required="true" requiredMessage="Odsek je obavezan"/>
<h:outputText value="Drzi se"/>
<p:inputText style="width: 97%" value="#{pred.drzise}" required="true" requiredMessage="Drzi se je obavezno"/>
<p:commandButton value="Save" action="#{pred.upPredmet()}" />
</h:panelGrid>
</p:dialog>
</h:column>
<h:column>
<f:facet name="header">Delete</f:facet>
<h:commandButton value="Delete" action="#{pred.delPredmet()}">
<f:param rendered="msgs" name="id" value="#{list.idpred}"/>
</h:commandButton>
</h:column>
</h:dataTable>
</h:form>
</center>
</h:body>
and function from PredmetBean.java @ViewScoped implements Serializable
// getter's, setter's and other functions
public void edit(){
ArrayList<Predmet> PrList = Predmet.getPredmets();
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
int id = Integer.parseInt(request.getParameter("idp"));
for(Predmet pr : PrList){
if( pr.getIdpred() == id ){
this.setIdPred(pr.getIdpred());
this.setNaziv(pr.getNaziv());
this.setAkronim(pr.getAkronim());
this.setSemestar(pr.getSemestar());
this.setGod(pr.getGod());
this.setOdsek(pr.getOdsek());
this.setDrzise(pr.getDrzise());
}
}
}
при нажатии на кнопку редактирования диалоговое окно должно открываться со значениями из строки, в которой кнопка нажата. Но единственное, что я получаю, это диалоговое окно, пытающееся открыться и сломаться, а затем появляются повсюду требуемые сообщения. Когда в диалоговом окне для значения отображается диалоговое окно list.somename, оно заполняет поля последним значением объекта в списке. Если у кого-то есть идея, как решить этот или какой-либо другой метод редактирования пользовательских значений, не переходя на другую страницу, это было бы здорово.