[Jsp/Struts] ServletException: BeanUtils.populate

Pagina: 1
Acties:

  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Ik ben het beheer-gedeelte in elkaar aan het zetten van een besteltoepassing. Gaat vlotjes, maar nu loop ik tegen het volgende probleem aan.

De Code
Het gaat om de volgende JSP (-fragment).
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<a href="open.do?action=delete&nr=<bean:write name="afdelingFrm" 
property="nummer" format="#" />">Verwijderen</a> (er wordt eerst om bevestiging gevraagd)

<h2>Gebruikers</h2>

<a href="../gebruiker/open.do?afdeling=<bean:write name="afdelingFrm"
property="nummer" format="#" />">Gebruiker Toevoegen (toegang geven)</a>

<table border=1>
<tr><td><b>Naam</b></td></tr>
<logic:iterate id="gebruiker" name="afdelingFrm" collection="gebruikers" >
<tr><td> <a href='../gebruiker/open.do?action=open&nr=<bean:write
 name="gebruiker" property="nummer" format="#" />'><bean:write
 name="gebruiker" property="naam" /></a></td></tr>
</logic:iterate>
</table>
(nee, het is geen PHP, maar zo ziet het er iets beter uit... :))

De uitvoer
Bij elkaar komen er onder elkaar (in de uitvoer):
1 een linkje (afdeling verwijderen)
2 een linkje (nieuwe gebruiker invoeren)
3 een tabel met de huidige gebruikers van deze afdeling (linkjes naar gebruiker-pagina's)

Het Probleem
Het resultaat ziet er goed uit, de linkjes bij 1) en 3) werken ook goed, maar die van 2 resulteert in de volgende exception:
code:
1
2
3
4
5
6
7
8
javax.servlet.ServletException: BeanUtils.populate
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
                .... (enorme stack-trace) ...

root cause: 
java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                 .... (enorme stack-trace) ...


Wat weet ik al?
Ik weet zeker dat het de 2e link is, wat als ik de http-parameters (die heten toch zo?) er af laat, gaat het wel goed, maar dan heb ik dus geen parameters ;)
Dus:
Werk niet: http : //IP.e.e.tje:8080/WebWinkel/gebruiker/open.do?afdeling=1
Werk wel: http : //IP.e.e.tje:8080/WebWinkel/gebruiker/open.do

Ik heb geen flauw idee waarom het toevoegen van ?afdeling=1 voor een fout zorgt, vooral omdat zo'n zelfde soort linkje erboven én eronder wel werkt. (en momenteel zelfs naar dezelfde action forward :? )
Ik krijg de gegenereerde html-pagina dus wel goed te zien en alle linkjes worden goed gegenereerd, maar die ene werkt dus als enige niet .

Iemand suggesties? (of een deja-vu ervaring bij deze post?? :P)

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat voor klasse is die afdeling volgens je form-specificatie (klasse-definitie van je form, of bij dynaforms je form-specificatie in de struts-config) ?

Want argument type mismatch lijkt er op te wijzen dat je type X (bijv een String) meegeeft terwijl het type Y (bijv een int) moet zijn. Zeker geavanceerde klassen worden niet of niet goed omgezet van String (want dat is het zodra de url is geparsed) naar "iets anders", in de meeste boeken wordt aangeraden uitsluitend met Strings te werken, kwa parameter-typen...

  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Afdeling is een een domein-klasse, waarin ik idd andere typen dan Strings gebruik (property nummer is bv. een int).
En afdelingFrm heeft ook een int-property nummer.

Bedoel je dat?
Zou ik in m'n form dus geen int's mogen gebruiken? (alles is goed, als het maar werkt!)
ff proberen...

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


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

Janoz

Moderator Devschuur®

!litemod

[wild guess]Heb je het ook al eens met Integer ipv int geprobeerd?

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


  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Ja hoor, dat is het inderdaad! _/-\o_

Ik geef in de request een parameter mee van type Afdeling genaamd afdeling, en in die linkjes wil ik een int teruggeven, maar die int noem ik vrolijk ook afdeling 8)7

Dus ik heb in de linkjes er afdelingNr van gemaakt, en nou doet ie het ! Kan ik toch nog met een gerust hart het weekend in... B)

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'