Wednesday, 25 June 2008

struts html:form'da dinamik action degistirme

ekran açilirlen c:if'lerle action degistirmede sorunla karsilastim. nesting error veriyordu çünkü c:if'in html:form'un kapatilmasindan sonra kapatilmis olmasini istiyordu.

html:form yerine html-el:form kullanip bir parametreye action degerini tanimladiktan sonra bu parametreyi action olarak kullanarak sorunu çözdüm. Bu da burada bir kösede dursun. Tekrar karsilasabilecegim bir durum gibi hissettim bir an.

<c:set var="PARAM_BIR" value="1"/>
<c:set var="PARAM_IKI" value="2"/>

<c:if test="${sessionScope.paramAdi eq PARAM_BIR}">
<c:set var="formAction" value="/birAction.do"/>
</c:if>
<c:if test="${sessionScope.paramAdi eq PARAM_IKI}">
<c:set var="formAction" value="/ikiAction.do"/>
</c:if>

<html-el:form action="${formAction}" method="post" >

burada eger farkli action'lara gitme ihtiyaci yoksa dispatchAction ya da mappingDispatchAction kullanarak tek action degeriyle çözüm getirilebilir. sonra yollanan parameter degeri degistirilerek farkli metodlara gitme saglanabilir. ama bu benim için çözüm degildi. struts-config'de farkli action'lara gitmem gerektiginden böyle bir çözüm gerekti.

No comments: