html:text aus mapped properties rendern

  • Themenstarter Themenstarter ff
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.

ff

Aktives Mitglied
hallo zusammen

ich habe ein objekt SampleDay, welches unter anderem ein attribut "value" vom typ float hat. ein struts form beinhaltet nun eine map solcher objekte. um auf die objekte innerhalb der map zugreifen zu können, habe ich zwei helper methoden gemacht.

Das sieht ungefähr so aus:
Java:
private Map<String, SampleDay> map

public SampleDay getMapContent(String index){ 
  return map.get(index); 
}
public void setMapContent(String index, Object data){
   map.put(index, (SampleDay) data);
}
Nun möchte ich für alle die "value"-Attribute je eine input type=text rendern lassen. das mache ich folgendermassen in der jsp:
HTML:
<c:forEach var="entry" items="${myForm.map}">
  <td>
      <html:text name="myForm" property="mapContent(${entry.key}).value"/>
  </td>
</c:forEach>
schön ist, dass mir die werte brav geschrieben werden. weniger schön ist, dass ich jeweils eine ServletException (BeanUtils.populate) erhalte.

sieht jemand, was ich hier falsch mache? ich seh's langsam nimmer...

grüsse,
ff
 
Zuletzt bearbeitet von einem Moderator:
Ich hatte auch mal Krieg mit den BeanUtils, aber bin nicht sicher ob das Problem hier dasselbe ist.

Das Problem, welches ich hatte war, dass BeanUtils getter/setter Paare aufgrund der Typen gebildet hat, sprich Rückgabe-Typ der Getter wurde zur Suche der setter verwendet (als Argument-Typ).

Demnach müsstes du es mal so probieren:
Java:
private Map<String, SampleDay> map;
 
public Object getMapContent(String index){ 
  return map.get(index); 
}
public void setMapContent(String index, Object data){
   map.put(index, (SampleDay) data);
}

bzw.

Java:
private Map<String, SampleDay> map;
 
public SampleDay getMapContent(String index){ 
  return map.get(index); 
}
public void setMapContent(String index, SampleDay data){
   map.put(index, data);
}

Aber ich würde mir sonst mal den BeanUtils Source nehmen, und debuggen, hilft immer 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben