[java struts] Actionform == null

Pagina: 1
Acties:

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Ben mezelf net eens een beetje java Struts aan het leren, maar ik snap er nog vrij weinig van.

Heb een simpel struts formpje gemaakt, maar om de een of andere reden wil hij de gegevens niet ophalen in mijn Action bean.

Op het moment dat ik de volgende methode aanroep,
Java:
1
2
3
4
5
6
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, 
HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {

   //...knip...

}

dan is actionForm == null. Bij het comileren geeft ie geen foutmeldingen dus het lijkt me sterk (maar natuurlijk wel mogûhlijk :9 ) dat ik ergens een typefout heb gemaakt. Het lijkt mij dat ik ergens vergeten ben om de waardes van dat formpje door te sturen. Waar kan dat aan liggen?

[ Voor 6% gewijzigd door Liqued op 27-07-2004 22:31 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

Laat iig ook even het relevante deel van je strutsconfig.xml zien en de eventuele foutmeldingen van je application server bij het deployen en aanroepen van de betreffende actie. Met deze informatie alleen is er weinig over te zeggen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • CubicQ
  • Registratie: September 1999
  • Laatst online: 16:29
Mijn eerste gok zou zijn dat er iets niet klopt in je struts-config.xml, maar goed, zonder die te kunnen zien is het natuurlijk lastig gokken :), dus laat die eens zien.

Die zou er globaal uit moeten zien als:

code:
1
2
3
4
5
6
7
8
9
10
<struts-config>
  <form-beans>
    <form-bean name="myForm" type="nl.package.MyForm"/>
  </form-beans>
  <action-mappings>
    <action name="myForm" path="myAction" type="nl.package.MyAction">
      ...
    </action>
  </action-mappings>
</struts-config>

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD 
Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
  <form-beans>
    <form-bean name="loginLookupForm" type="loginproject.LoginLookupForm" />
  </form-beans>
  <action-mappings>
    <action name="loginLookupForm" path="/loginLookupAction" type="loginproject.LoginLookupAction">
      <forward name="forward" path="/login.jsp" />
    </action>
    <action input="login.jsp" path="/loginLookup" type="loginproject.LoginLookupAction">
      <forward name="forward" path="/login.jsp" />
    </action>
  </action-mappings>
</struts-config>


Foutmeldingen zijn er bij het deployen en aanroepen, omdat ik niks laat uitvoeren als actionForm == null.

(snap nog niet helemaal de logica van alles, dus let er niet op als er opeens "onzinnige" zaken in staan.

[ Voor 44% gewijzigd door Liqued op 27-07-2004 23:09 ]


  • CubicQ
  • Registratie: September 1999
  • Laatst online: 16:29
Met welke URL roep je de pagina aan? Als je dat doet met /loginLookup gaat het inderdaad fout: bij die action heb je geen Form gedefinieerd (en die input in die action heeft nu ook geen zin, die wordt aangeroepen wanneer het valideren van het Form niet goedgaat).

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
login.jsp (dus hij gaat weer naar de pagina waar ie vandaan kwam)

[ Voor 76% gewijzigd door Liqued op 27-07-2004 23:17 ]


Verwijderd

Liqued schreef op 27 juli 2004 @ 23:17:
login.jsp (dus hij gaat weer naar de pagina waar ie vandaan kwam)
Je zou in login.jsp een form moeten hebben wat gesubmit wordt naar: loginLookupAction.do

Is dat het geval?

  • Deathchant
  • Registratie: September 2003
  • Laatst online: 22-05 16:51

Deathchant

Don't intend. Do!

ik neem aan dat je in je actionform getters en setters hebt?

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionMapping;

public class HelloWorld {
  // dit zijn de properties van je form, aannemende dat dit textvelden zijn
  private String username;
  private String wachtwoord;

  // getter username
  public String getUsername() {
    return username;
  }

  // setter username
  public void setUsername(String username) {
    this.username = username;
  }
  
  // getter password
  public String getPassword() {
    return password;
  }

  // setter password
  public void setPassword(String password) {
    this.password = password;
  }

  /**
   * Reset all properties to their default values.
   * @param mapping The ActionMapping used to select this instance.
   * @param request The HTTP Request we are processing.
   */
  public void reset(ActionMapping mapping, HttpServletRequest request) {
    super.reset(mapping, request);
  }

  /**
   * Validate all properties to their default values.
   * @param mapping The ActionMapping used to select this instance.
   * @param request The HTTP Request we are processing.
   * @return ActionErrors A list of all errors found.
   */
  public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
   // hier kun je dan je username of password controleren

    return super.validate(mapping, request);
  }
}

de reset en validate zijn standaard action methods, deze kun je laten zoals ze zijn.
in het bovenstaande voorbeeld neem ik aan dat je deze velden gebruikt in je login.jsp:

code:
1
2
3
4
<html:form action="/LoginAction.do">
   <html:text property="username" />
   <html:text property="password" />
</html:form>

[ Voor 30% gewijzigd door Deathchant op 28-07-2004 09:28 ]

Canon: EOS R6 | EF 16-35/4L IS USM | EF 70-200/2.8L IS II USM
Zeiss: 35/2 Distagon | 50/2 Makro-Planar | 85/1.4 Planar | 100/2 Makro-Planar | 135/2 Apo Sonnar

Pagina: 1