خطوط: إعادة التوجيه ؛ كيف يمكنني إعادة التوجيه إلى حدث عمل محدد؟
سؤال
لدي حبة عمل في تطبيق خطوط بلدي. سيعرض المعالج/الطريقة الافتراضية قائمة بالبيانات ، قائمة بجميع بلدي MarketResearch
أشياء
على JSP الخاص بي ، يمكنني النقر على واحد لعرض تفاصيله ، وهذا يأخذني إلى JSP مختلف مع نموذج محدد مسبقًا استنادًا إلى معين MarketResearch
الكائن الذي حددته.
لدي طريقة أخرى في الفاصوليا التي تم تعيينها إلى save
إرسال زر ، وهذا يأخذ ما هو على النموذج المعدل ، ويستمر في ذلك. بعد حدوث ذلك ، أريد أن يعود إلى النموذج ، بدلاً من إجراء الإدراج (المعالج الافتراضي) ، هل هذا ممكن؟
عملي على النحو التالي:
public class MarketResearchAction extends BaseAction
{
@SpringBean
ClientService clientService;
private static final String VIEW = "/jsp/marketResearch.jsp";
private Client client;
private Client clientBeforeChanges;
public Client getClient()
{
return client;
}
public void setClient(Client client)
{
this.client = client;
}
@DefaultHandler
public Resolution viewAll()
{
return new ForwardResolution(VIEW);
}
public Resolution viewClientMarketResearch()
{
if (client.getSector().equals("Education"))
{
return new ForwardResolution("/jsp/marketResearchEducation.jsp");
} else if (client.getSector().equals("Local Government"))
{
return new ForwardResolution("/jsp/marketResearchLocalGovernment.jsp");
} else if (client.getSector().equals("Housing Association"))
{
return new ForwardResolution("/jsp/marketResearchHousing.jsp");
}
return new ForwardResolution("/jsp/viewClientMarketResearch.jsp");
}
public Resolution save()
{
clientBeforeChanges = clientService.getClientById(client.getId());
clientService.persistClient(client);
getContext().getMessages().add(new SimpleMessage("{0} updated", client.getName()));
return new RedirectResolution("/MarketResearch.action").flash(this);
}
public Client getClientBeforeChanges()
{
return clientBeforeChanges;
}
public void setClientBeforeChanges(Client clientBeforeChanges)
{
this.clientBeforeChanges = clientBeforeChanges;
}
public ClientService getClientService()
{
return clientService;
}
public void setClientService(ClientService clientService)
{
this.clientService = clientService;
}
}
هل هو ممكن؟ أم أنا أقترب من الموقف من زاوية سيئة ويجب إعادة العامل؟
شكرًا
المحلول
نعم. يمكنك إعادة أ RedirectResolution
إلى النموذج JSP. إذا كنت تواجه صعوبة في المعلمات ، إذا كان لديك في save()
الطريقة ، يمكنك أن تفعل ذلك:
return new RedirectResolution("/theJsp.jsp")
.addParameter("one", one)
.addParameter("two", two)
.addParameter("three", three)
.flash(this);
إذا لم يكن لديك المعايير التي تم نقلها إلى النموذج ، فسيتعين عليك الحفاظ عليها بطريقة أو بأخرى. يمكنك تمرير كائن MarketResearch من خلال النموذج حتى يكون لديك هناك.
<stripes:hidden name="marketResearch" value="${ActionBean.marketResearch}"/>
وأضف متغير المثيل المطلوب/getter/setter على MarketResearchActionBean
.