Как получить более подробную информацию:Как работает @RequestBody
Я делаю простой запрос на отправку почты из почтового отправителя chrome extension.
Мой контроллер:
@Controller
@RequestMapping("/theme")
public class ThemeController {
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody
Status addTheme(@RequestBody Theme theme) {
try {
themeServices.addEntity(theme);
return new Status(1, "Theme added Successfully !");
} catch (Exception e) {
// e.printStackTrace();
return new Status(0, e.toString());
}
}
В Theme.java:
@Entity
@Table(name = "theme", uniqueConstraints = { @UniqueConstraint(columnNames = { "theme_id" }) })
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@NamedQuery(name = "Theme.findAll", query = "SELECT t FROM Theme t")
public class Theme implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "theme_id")
private long themeId;
private String description;
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "category_id", nullable=true)
private ThemeCategory themeCategory;
В ThemeCategory.java:
@Entity
@Table(name = "theme_category", uniqueConstraints = { @UniqueConstraint(columnNames = { "category_id" }) })
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@NamedQuery(name = "ThemeCategory.findAll", query = "SELECT t FROM ThemeCategory t")
public class ThemeCategory implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "category_id")
private long categoryId;
private String description;
private String name;
// bi-directional many-to-one association to Theme
// @OneToMany(mappedBy="themeCategory")
@OneToMany(mappedBy = "themeCategory", fetch = FetchType.EAGER)
@Column(nullable = true)
@JsonManagedReference
private Set<Theme> themes;
// bi-directional many-to-one association to ThemeCategory
@ManyToOne
@JoinColumn(name = "parent_category_id", nullable=true)
@JsonBackReference
private ThemeCategory parentThemeCategory;
// bi-directional many-to-one association to ThemeCategory
// @OneToMany(mappedBy="themeCategory")
@OneToMany(mappedBy = "parentThemeCategory", fetch = FetchType.EAGER)
@Column(nullable = true)
@JsonManagedReference
private Set<ThemeCategory> themeCategories;
Тема Категория Таблица:
CREATE TABLE `theme_category` (
`category_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`parent_category_id` smallint(5) unsigned DEFAULT NULL,
`name` varchar(45) NOT NULL,
`description` varchar(1000) DEFAULT NULL ,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`category_id`),
KEY `idx_parent_category_id` (`parent_category_id`),
CONSTRAINT `fk_parent_category_id` FOREIGN KEY (`parent_category_id`) REFERENCES `theme_category` (`category_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=301 DEFAULT CHARSET=utf8;
Тема Стол:
CREATE TABLE `theme` (
`theme_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`category_id` smallint(5) unsigned NOT NULL,
`file_path` varchar(200) DEFAULT NULL,
`description` varchar(1000) DEFAULT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`theme_id`),
KEY `idx_category_id` (`category_id`),
CONSTRAINT `fk_category_id` FOREIGN KEY (`category_id`) REFERENCES `theme_category` (`category_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=401 DEFAULT CHARSET=utf8;
Я использую Почтальон расширение, чтобы сделать отдых после вызова:
http://localhost:8080/CustomerRegistration/theme/create
Заголовок Params:
Content-Type: применение/JSON
Json Body:
{"description":"theme8","name":"theme8","themeCategory":{"categoryId":302, "themes":[],"parentThemeCategory":{}, "themeCategories":[]}}
И попытался около 2 часов с несколькими способами тела. Но неизменно говорили:
Сервер отказал этот запрос, потому что объект запроса в формате, который не поддерживается запрашиваемым ресурсом для запрошенного метода.
Чтобы проанализировать, я не получаю ничего. В консоли Eclipse также ничего не отображается относительно этой проблемы.
Что не так? Есть ли какие-либо инструменты для создания действительных запросов.
Я пробовал свой код с тем же запросом, и он работает. Единственное отличие заключается в том, что я использовал «Advance Rest Client» для отправки запроса. – reos
Существует таблица Theme_Category, имеющая onetomany отношения между субъектами категории и темы. которые поддерживают тематические категории и темы. Возможно, причина в том, что я опубликовал весь код в https://github.com/Ravikumarmaddi/UserRegistration/tree/master/UserRegistration. Просьба посмотреть его. – Sun
Добавьте заголовок Accept для приложения/json и повторите попытку –