मैंने super.doExecute()
पर कॉल करने से पहले अपने तर्क करने के लिए स्ट्रैट्स ServletRedirectResult
उप-वर्ग को समाप्त कर दिया और doExecute()
विधि को ओवरराइड कर दिया। ऐसा लगता है:
public class AppendRedirectionResult extends ServletRedirectResult {
private DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
@Override
protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception {
String date = df.format(new Date());
String loc = "/section/document/"+date;
super.doExecute(loc, invocation);
}
}
मुझे यकीन नहीं है कि यह करने का यह सबसे अच्छा तरीका है, लेकिन यह काम करता है।
Struts.xml में, इस तरह के रूप में एक गतिशील परिणाम है:
<result name="redirect" type="redirect">${url}</result>
कार्रवाई में:
private String url;
public String getUrl()
{
return url;
}
public String execute()
{
[other stuff to setup your date]
url = "/section/document" + date;
return "redirect";
}
आप वास्तव में यह एक ही उपयोग कर सकते हैं
धन्यवाद एक बहुत, कि अच्छी तरह से काम करता है! क्या एक्सएमएल में बदलाव करने का कोई तरीका है ताकि मुझे प्रत्येक कार्यवाही पर लागू करने की आवश्यकता न हो? मैं आदर्श रूप से ऐसा करना चाहता हूं कि यह मेरे सभी कार्यों पर लागू हो। – Chris
आप वैश्विक परिणाम आज़मा सकते हैं। मैंने गतिशील चर के लिए इसका प्रयोग नहीं किया है, लेकिन जब तक कार्रवाई परिणाम लौटाती है, मुझे कोई कारण नहीं दिखता है कि यह काम नहीं करेगा। –
इस काम के लिए वैश्विक परिणाम ठीक है। –