我正在Spring MVC中创建一个项目来接受反馈表单。我接受用户值,即姓名,电子邮件,电话和电话; 'home.jsp'页面中的评论。然后我将这些值传递给控制器'反馈',然后我想将这些值传递给另一个控制器'feedback2',然后最后传递给'admin_panel.jsp。我应该如何在控制器之间传递值?
我接受用户名,即姓名,电子邮件,电话和电话; 'home.jsp'页面中的评论
针对home.jsp
<manifest ...>
...
<application ...>
<activity android:name="javafxports.android.FXActivity"
android:label="Sample"
android:launchMode="singleTop"
android:configChanges="orientation|screenSize">
<meta-data android:name="main.class" android:value="com.sample.Main"/>
...
</activity>
...
<activity android:name="com.gluonhq.impl.charm.down.plugins.android.NotificationActivity"
android:parentActivityName="javafxports.android.FXActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value="javafxports.android.FXActivity"/>
</activity>
<receiver android:name="com.gluonhq.impl.charm.down.plugins.android.AlarmReceiver" />
</application>
然后我将这些值传递给控制器'反馈',然后我想将这些值传递给另一个控制器'feedback2',最后传递给'admin_panel.jsp。
<form action="feedback" method="post">
<input type="text" name="Name" value="Name " onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Name';}" required="">
<input type="email" name="Email" value="Email" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Email';}" required="">
<input type="text" name="Phone" value="Phone" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Phone';}" required="">
<textarea type="text" name="comments" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Special Instruction/Comments...';}" required="">Special Instruction/Comments...</textarea>
<input type="submit" value="Send">
</form>
最后我在'admin_panel.jsp。
上显示值***HomeController.java***
package com.helloworld.mvc;
import java.text.DateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
@RequestMapping(value = "/feedback", method = RequestMethod.POST)
public String feedback(@RequestParam("Name") String Name, @RequestParam("Email") String Email, @RequestParam("Phone") String Phone, @RequestParam("comments") String textarea, Model model)
{
model.addAttribute("Name",Name);
model.addAttribute("Email",Email);
model.addAttribute("Phone",Phone);
model.addAttribute("textarea",textarea);
return "feedback2";
}
@RequestMapping(value = "/feedback2", method = RequestMethod.POST)
public String feedback2(@RequestParam("Name") String Name, @RequestParam("Email") String Email, @RequestParam("Phone") String Phone, @RequestParam("comments") String textarea, Model model)
{
return "admin_panel.jsp";
}
}
答案 0 :(得分:0)
我建议重新考虑你的设计(例如,为什么feedback2是一个ReuqetMapping而不是一个通过反馈调用的简单方法),但你可以在Spring MVC中通过returnin将#34;视图中的请求提前命名&#34;
forward:<new url>
在你的情况下
forward:/feedback2
答案 1 :(得分:0)
我只能同意@Thomas Pawlitzki已经说过的话:重新思考你的设计。我希望POST请求映射能够直接返回显示成功或错误的视图(在您的情况下为admin_panel.jsp
)。
此处的另一个问题:强烈建议您不要将反馈数据映射为@RequestParam
。为消息有效内容创建一个类,并将其映射为@RequestBody
。您的方法签名将变得更加简单:
public String feedback(@RequestBody Feedback feedback) {...}
如果你 - 无论出于何种原因 - 需要将模型对象从一个控制器传递到另一个控制器,我建议使用flash属性。将RedirectAttributes
的实例传递给您的反馈控制器,并通过redirectAttributes.addFlashAttriute(key, value)
添加Flash属性。然后返回redirect:/feedback2
。所有闪存属性都可用作feedback2控制器中的模型对象。