我正在尝试使用Spring读取我在Twitter和Facebook上找到的状态,并将它们发布到SQLite数据库中。每当我尝试运行我的Spring项目时,我都会得到以下错误:
Neither BindingResult nor plain target object for bean name 'facebookModel' available as request attribute
model.addAttribute("facebookModel", new FacebookModel());
package adam.social.media.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.Post;
import org.springframework.social.facebook.api.impl.FacebookTemplate;
import org.springframework.social.twitter.api.Tweet;
import org.springframework.social.twitter.api.Twitter;
import org.springframework.social.twitter.api.impl.TwitterTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import adam.social.media.model.FacebookModel;
import adam.social.media.model.TwitterModel;
import adam.social.media.repository.FacebookRepository;
import adam.social.media.repository.TwitterRepository;
@Controller(value = "/socialmedia")
public class SocialMediaController {
private Facebook facebook;
private Twitter twitter;
private FacebookRepository facebookRepository;
private TwitterRepository twitterRepository;
private static Logger logger = Logger.getLogger(SocialMediaController.class
.getName());
@Autowired
public SocialMediaController(FacebookRepository facebookRepository, TwitterRepository twitterRepository) {
logger.debug("ENTERING SocialMediaController");
this.facebookRepository = facebookRepository;
this.twitterRepository = twitterRepository;
logger.debug("EXITING SocialMediaController");
}
@RequestMapping(value = "/facebook/get", method = RequestMethod.GET)
public ModelAndView getFacebookStatus(FacebookModel facebookModel) {
logger.debug("ENTERING getFacebookStatus");
facebook = new FacebookTemplate("CAACEdEose0cBAJxfcf9xRQsL5un1WeEyIe2dy2xjI0EmuwzNbCWCPrTGwbsukRfQNb5ojQepPsMEjZAEXVwWfbYNA2fQO72kS3SPimt3ZCud4ykUZCoFkxZC6ks64dneZCNXLLJGRcqLeQ6DBPGwMrWtaSfi3W0zJLwDG1eu5FUsWJzgVZBwV4RmQvhhR4Yh0JfmyJSEU5am4L7rYJTUK0GtcYflhYlDMZD");
ModelAndView modelAndView = new ModelAndView("index");
// PagedList<Post> posts = facebook.feedOperations().getFeed();
// for(Post post : posts) { System.out.println(post.getMessage()); }
Post post = facebook.feedOperations().getFeed().get(0);
facebookModel.setPostId(post.getId());
// facebookModel.setToProfile(post.getTo().get(0).getName());
facebookModel.setToProfile("Hi");
facebookModel.setFromProfile(post.getFrom().getName());
facebookModel.setCreatedTime(post.getCreatedTime());
facebookModel.setUpdatedTime(post.getUpdatedTime());
facebookModel.setMessage(post.getMessage());
facebookModel.setPictureUrl(post.getPicture());
modelAndView.addObject("facebookModel", facebookModel);
logger.debug("EXITING getFacebookStatus");
return modelAndView;
}
@RequestMapping(value = "/twitter/get", method = RequestMethod.GET)
public ModelAndView getTwitterStatus(TwitterModel twitterModel) {
logger.debug("ENTERING getTwitterStatus");
twitter = new TwitterTemplate("");
ModelAndView modelAndView = new ModelAndView("index");
// PagedList<Post> posts = twitter.feedOperations().getFeed();
// for(Post post : posts) { System.out.println(post.getMessage()); }
Tweet tweet = twitter.timelineOperations().getHomeTimeline().get(0);
twitterModel.setPostId(2);
twitterModel.setFromProfile("3");
twitterModel.setMessage("1");
modelAndView.addObject("twitterModel", twitterModel);
logger.debug("EXITING getTwitterStatus");
return modelAndView;
}
@RequestMapping(value = "/facebook/post", method = RequestMethod.POST)
public ModelAndView postFacebookStatus(FacebookModel facebookModel, BindingResult result) {
logger.debug("ENTERING postFacebookStatus");
if (result.hasErrors()) {
Map<String, Object> params = new HashMap<String, Object>();
List<ObjectError> errors = result.getAllErrors();
params.put("facebookModel", facebookModel);
params.put("errors", errors);
return new ModelAndView("inddex", params);
}
facebookRepository.saveAndFlush(facebookModel);
logger.debug("EXITING postFacebookStatus");
return new ModelAndView("redirect:/index.html");
}
@RequestMapping(value = "/twitter/post", method = RequestMethod.POST)
public ModelAndView postTwitterStatus(TwitterModel twitterModel, BindingResult result) {
logger.debug("ENTERING postTwitterStatus");
if (result.hasErrors()) {
Map<String, Object> params = new HashMap<String, Object>();
List<ObjectError> errors = result.getAllErrors();
params.put("twitterModel", twitterModel);
params.put("errors", errors);
return new ModelAndView("inddex", params);
}
twitterRepository.saveAndFlush(twitterModel);
logger.debug("EXITING postTwitterStatus");
return new ModelAndView("redirect:/index.html");
}
}
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<head>
<title>Social Media</title>
</head>
<body>
<form:form modelAttribute="facebookModel" method="POST" commandName="facebookModel">
<form:hidden path="id" />
<form:hidden path="postId" />
<form:hidden path="toProfile" />
<form:hidden path="fromProfile" />
<form:hidden path="createdTime" />
<form:hidden path="updatedTime" />
<form:hidden path="message" />
<form:hidden path="pictureUrl" />
<button name="submit" type="submit" value="Save" style="background-color: rgba(255, 255, 255, 1); border: none; outline: none; cursor: pointer">
<img src="<c:url value="images/facebook.png"/>" />
</button>
</form:form>
<form:form modelAttribute="twitterModel" method="POST" commandName="twitterModel">
<form:hidden path="id" />
<form:hidden path="postId" />
<form:hidden path="toProfile" />
<form:hidden path="fromProfile" />
<form:hidden path="createdTime" />
<form:hidden path="updatedTime" />
<form:hidden path="message" />
<form:hidden path="pictureUrl" />
<button name="submit" type="submit" value="Save" style="background-color: rgba(255, 255, 255, 1); border: none; outline: none; cursor: pointer">
<img src="<c:url value="images/twitter.png"/>" />
</button>
</form:form>
</body>
</body>
谢谢你,亚当·巴里
这是因为您试图在设置模型属性之前获取它。即。在getFacebookStatus
方法中,您获得了FacebookModel
,我没有看到您在此之前设置过它。解决方案是创建facebookmodel
的新实例并将其设置为模型属性。基本上是这样的:
@RequestMapping(value = "/facebook/get", method = RequestMethod.GET)
public ModelAndView getFacebookStatus() {
logger.debug("ENTERING getFacebookStatus");
facebook = new FacebookTemplate("CAACEdEose0cBAJxfcf9xRQsL5un1WeEyIe2dy2xjI0EmuwzNbCWCPrTGwbsukRfQNb5ojQepPsMEjZAEXVwWfbYNA2fQO72kS3SPimt3ZCud4ykUZCoFkxZC6ks64dneZCNXLLJGRcqLeQ6DBPGwMrWtaSfi3W0zJLwDG1eu5FUsWJzgVZBwV4RmQvhhR4Yh0JfmyJSEU5am4L7rYJTUK0GtcYflhYlDMZD");
ModelAndView modelAndView = new ModelAndView("index");
// PagedList<Post> posts = facebook.feedOperations().getFeed();
// for(Post post : posts) { System.out.println(post.getMessage()); }
Post post = facebook.feedOperations().getFeed().get(0);
FacebookModel facebookModel = new FacebookModel();
facebookModel.setPostId(post.getId());
// facebookModel.setToProfile(post.getTo().get(0).getName());
facebookModel.setToProfile("Hi");
facebookModel.setFromProfile(post.getFrom().getName());
facebookModel.setCreatedTime(post.getCreatedTime());
facebookModel.setUpdatedTime(post.getUpdatedTime());
facebookModel.setMessage(post.getMessage());
facebookModel.setPictureUrl(post.getPicture());
modelAndView.addObject("facebookModel", facebookModel);
logger.debug("EXITING getFacebookStatus");
return modelAndView;
}
获取模型属性:
@RequestMapping(value = "/facebook/post", method = RequestMethod.POST)
public ModelAndView postFacebookStatus(@ModelAttribute("facebookModel") FacebookModel facebookModel, BindingResult result) {
....
}
当我只留下表显示可用的比萨饼与链接“删除”,一切显示正常,删除也正常工作。 我想表单和控制器@modelAttribute有问题,但我找不到确切的问题,我在controller中添加了与表单相同的属性--“mypiza”,这应该可以工作(至少从我在Google上找到的东西来看)。 有人能告诉我们是什么阻碍了这个应用程序的工作,以及如何解决这个问题吗?如果需要其他配置文件,我可以提供它们。
嘿,我是从Spring开始的,但是我发现了这个异常并且无法解决它这是我的jsp 这是我的控制器 这是个例外
我一直试图提交一个html表单到spring boot,但无法使其工作。 我的pom.xml中有这个 我的application.properties文件中有以下内容: 我还有一个名为index.html的类似html文件,位于 但代码似乎无法识别taglib,因为我在web页面中看到了以下内容: 注意taglib是如何不被识别的,只是打印在页面的顶部? Whitelabel错误页面此应用程序没有
我在使用spring forms标记库创建表单时遇到一个异常 “bean名称'command'的BindingResult和普通目标对象都不能作为请求属性使用” bean类是: controller类是
下面是我的JSP和控制器类,当我在tomcat中运行应用程序时,我遇到了这个异常。
问题内容: 我在网上查看了几乎所有与该问题有关的答案,但在我的代码中找不到该问题。 这是我的JSP页面。 当我删除 工作正常。我可以与控制器通信。因此问题与这条线有关。 这是我的web.xml 这是我的servlet-context.xml 还有我的applicationContext.xml 我可能在XML文件中做错了。我对于这个spring是新来的-hibernate员工,请耐心等待。谢谢..