2013-10-04 9 views
7

क्या स्ट्रेट्स 2 में s:form टैग में गतिशील action विशेषता निर्दिष्ट करने का कोई तरीका है? मुझे नीचे कुछ चाहिए।गतिशील एस: फॉर्म एक्शन

<c:set var="formAction" value="baseAction" /> 
<c:if test="${someCondition}"> 
    <c:set var="formAction" value="childAction" />Ac 

<s:form method="post" action="${formAction}"> 
    <s:input....../> 
    <s:select...../> 
</s:form> 

मुझे पता है कि यह जावास्क्रिप्ट का उपयोग करके हासिल किया जा सकता है लेकिन मैं रिफैक्टरिंग से बचना चाहता हूं। मैंने स्क्रिप्लेट का उपयोग करके इसे प्राप्त करने का प्रयास किया है लेकिन मुद्दा यह है कि स्ट्रूट 2 टैग रनटाइम विशेषता नहीं लेते हैं। मैंने ओजीएनएल के साथ भी कोशिश की लेकिन इससे कोई मदद नहीं मिली।

उत्तर

7

मूल्य निर्धारित करने और स्थिति की जांच करने के लिए स्ट्रूट 2 टैग का उपयोग करें और फिर action विशेषता डालने के लिए ओजीएनएल का उपयोग करें।

<s:set var="formAction" value="'baseAction'" /> 
<s:if test="some_condition"> 
    <s:set var="formAction" value="'childAction'" /> 
</s:if> 

<s:form method="post" action="%{#formAction}"> 
    <s:input....../> 
    <s:select...../> 
</s:form> 
2

कार्रवाई url गतिशील का निर्माण करने के s:url टैग का प्रयोग करें।

<s:url action="%{somePoperty}" var="myUrl"/> 
<s:form action="%{#myUrl}"> 

वास्तव में Struts टैग के गुणों को न केवल scriptlets लेकिन यह भी JSTL ईएल एक्सप्रेशन स्वीकार नहीं करते।

+0

'' क्रिया के लिए '' टैग का उपयोग करने की आवश्यकता नहीं है। –

संबंधित मुद्दे