Reputation: 766
I've problems trying to display the field location of a class called "Element" situated in MySql DB. I have to use a SelectionOneMenu to show all the values contained in the field Element.Location. When i run the xhtml page on my server Glassfish in the selectionmenu is shown a string: "elementmanagementDTO.elementDTO@3231313". I don't know what it means. I'll put here down the classes that involved.
I have my xhtml
page:
<!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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Add a Default Package</title>
</h:head>
<h:body>
<h:form>
<p:panel header="DefaultPackage Form">
<h:panelGrid columns="3" id="regGrid">
<h:outputLabel for="Name">Name:</h:outputLabel>
<p:inputText id="Name" value="#{addDefaultPackageBean.defpackDTO.Name}" />
<p:message for="Name" />
<h:outputLabel for="location">Location:</h:outputLabel>
<p:inputText id="location" value="#{addDefaultPackageBean.defpackDTO.location}" />
<p:message for="location" />
<h:selectOneMenu value="#{addDefaultPackageBean.name}">
<f:selectItems value="#{addDefaultPackageBean.elelis}" var="ElementDTO" itemValue="#{ElementDTO.location}" itemlabel="#{ElementDTO.location}"/>
</h:selectOneMenu>
</h:panelGrid>
<p:commandButton value="Add" update="regGrid" action="#{addDefaultPackage.add()}" />
</p:panel>
</h:form>
</h:body>
</html>
My bean page in the dynamic web project:
package beans;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import elementManagement.ElementMgr;
import elementManagementDTO.ElementDTO;
import DefaultPackageManagement.DefaultPackageMgr;
import DefaultPackageManagementDTO.DefaultPackageDTO;
@ManagedBean(name="addDefaultPackageBean") //come viene richiamato
@RequestScoped
public class AddDefaultPackageBean {
@EJB
private DefaultPackageMgr defpackMgr;
private DefaultPackageDTO defpackDTO;
private List<ElementDTO> elelis;
private String name;
@EJB
private ElementMgr elemMgr;
public AddDefaultPackageBean() {
//defpackDTO = new DefaultPackageDTO();
}
@PostConstruct
public void init()
{
setElelis(elemMgr.getAllElements());
}
public String add() {
defpackMgr.save(defpackDTO);
return "home?faces-redirect=true";
}
public List<ElementDTO> getElelis() {
return elelis;
}
public void setElelis(List<ElementDTO> elelis) {
this.elelis = elelis;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public DefaultPackageDTO getDefpackDTO() {
return defpackDTO;
}
public void setDefpackDTO(DefaultPackageDTO defpackDTO) {
this.defpackDTO = defpackDTO;
}
}
ElementmanagementDTO.elementDTO class:
package elementManagementDTO;
import java.util.Date;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.validator.constraints.NotEmpty;
public class ElementDTO {
@NotEmpty
private int cost;
@NotEmpty
private String description;
@NotEmpty
@Temporal(TemporalType.DATE)
private Date endingDate;
@NotEmpty
private String location;
@NotEmpty
@Temporal(TemporalType.DATE)
private Date startingDate;
@NotEmpty
private String type;
@NotEmpty
private String name;
//@Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
// message="invalid email")
public int getCost() {
return cost;
}
public void setCost(int cost) {
this.cost = cost;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Date getStartingDate() {
return startingDate;
}
public void setStartingDate(Date startingDate) {
this.startingDate = startingDate;
}
public Date getEndingDate() {
return endingDate;
}
public void setEndingDate(Date endingDate) {
this.endingDate = endingDate;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
my managerbean function, situated in ejb, that has the scope to transform the element got in model from the query in a elementDTO:
public List<ElementDTO> getAllElements() {
List<Element> ele=new ArrayList<Element>();
ele=em.createNamedQuery(Element.FIND_ALL, Element.class)
.getResultList();
ElementDTO eleDTO;
List<ElementDTO> elementDTO=new ArrayList<ElementDTO>();
for(Element e:ele)
{
eleDTO= convertToDTO(e);
elementDTO.add(eleDTO);
}
return elementDTO;
}
my query situated in the model:
@NamedQuery(name="Element.findAll", query="SELECT e FROM Element e")
and the string used in managerbean:
public static final String FIND_ALL = "Element.findAll";
Upvotes: 0
Views: 1126
Reputation: 10058
elementmanagementDTO.elementDTO@3231313 is the the initial memory address of the object in JVM.
And all I can see is that your itemlabel
of the selectItems should be with a capital L itemLabel
<f:selectItems value="#{addDefaultPackageBean.elelis}"
var="ElementDTO" itemValue="#{ElementDTO.location}"
itemLabel="#{ElementDTO.location}"/>
Upvotes: 2