Avatar billede sunlock Nybegynder
16. marts 2011 - 07:29 Der er 9 kommentarer og
1 løsning

Struts: Simpel spørgsmål vedr. grundlæggende struts

Jeg har overtaget noget kode, som er lavet i struts. Desværre har jeg ikke tiden til hverken at omkode det grundlæggende eller sætte mig specielt godt ind i struts.

Det kører på version 1.2.9 af struts.

Spørgsmålet går på følgende (lidt semi-pseudo kode):
-----
class A {
  public A(int id, B b) {
  //set id/b
  }

  //get/set til id/b
}
class B {
  String name
  //get/set og constructor
}
-----
Altså, 2 Vo'er hvor den ene indeholder den anden. Så kommer tusind kroners spørgsmålet, hvordan får jeg printet "name" ud på min jsp når jeg har fat i en instans af A?
Avatar billede arne_v Ekspert
16. marts 2011 - 15:46 #1
Hvis du bruger Struts med JSTL og EL boer du kunne bruge:

${navnpaainstansafa.b.name}

Med aegte Struts taglib er det mere tricky.

<bean:write name="navnpaainstansafa" property="b"/>

er jo ikke nok.

Jeg tror at du skal have fat paa nested.

Docs:

http://struts.apache.org/1.2.8/userGuide/struts-nested.html

Jeg kan evt. proeve at bixe et eksempel senere.
Avatar billede sunlock Nybegynder
17. marts 2011 - 09:30 #2
Takker - jeg kigger lige på det :)
Avatar billede sunlock Nybegynder
18. marts 2011 - 11:11 #3
Hvis du kan klaske et eksempel sammen vil jeg blive glad... Kan godt se at det er svært bare at springe ud i struts uden at læse noget...

Jeg har noget kode her:

-----
<logic:iterate id="s" name="ss" type="A">
    ...
    <bean:write name="s" property="id" />
    ...
</logic:iterate>
-----

Jeg kan dog ikke lige gennemskue hvordan taglibs osv hænger sammen med det jeg har... Hvordan vil jeg fange B-objektet her? *suk*
Avatar billede sunlock Nybegynder
18. marts 2011 - 11:12 #4
Hmm.. fik ikke kopieret hele koden ind:

-----
<logic:iterate id="s" name="ss" type="A">
    ...
    <bean:write name="s" property="id" />
    <bean:write name="s" property="B"/>
    ...
</logic:iterate>
-----

Men den printer jo bare B ud som et objekt.
Avatar billede arne_v Ekspert
21. marts 2011 - 03:13 #5
Hm. Jeg må indrømme at jeg kan heller ikke få det til at virke.
Avatar billede arne_v Ekspert
21. marts 2011 - 03:26 #6
Ha - nu virker det - det hjalp at jeg rettede en pinlig fejl i min kode.

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>
<%!
public class A {
    private String id;
    private B b;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public B getB() {
        return b;
    }
    public void setB(B b) {
        this.b = b;
    }
}

public class B {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
%>
<%
B b = new B();
b.setName("ABC");
A a = new A();
a.setId("123");
a.setB(b);
request.setAttribute("o", a);
%>
a.id = <bean:write name="o" property="id"/>
<br>
a.b = <bean:write name="o" property="b"/>
<br>
a.b.name = <bean:write name="o" property="b.name"/>
<br>
a.b.name = <nested:root name="o"><nested:nest property="b"><nested:write property="name"/></nested:nest></nested:root>
Avatar billede sunlock Nybegynder
21. marts 2011 - 11:22 #7
Sweet Dingus!

Smider du et svar. Glæder mig til at jeg får tid til at udface struts :)
Avatar billede arne_v Ekspert
21. marts 2011 - 14:11 #8
svar
Avatar billede arne_v Ekspert
21. marts 2011 - 14:12 #9
Struts var et fremragende web framework. I 2001.
Avatar billede sunlock Nybegynder
21. marts 2011 - 14:46 #10
Ja - eller noget i den stil. Ville heller bruge spring eller stripes, men har desværre ikke tiden til at lægge det om... Men endnu en gang tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester