@@ -42,10 +42,15 @@ public class HtmxSeriesController {
42
42
private final SeriesService seriesService ;
43
43
44
44
@ InitBinder ("addCommentForm" )
45
- protected void initBinder (WebDataBinder binder ) {
45
+ protected void initBinderForComments (WebDataBinder binder ) {
46
46
binder .registerCustomEditor (String .class , "comment" , new StringTrimmerEditor (true ));
47
47
}
48
48
49
+ @ InitBinder ("addCatalogNumbersForm" )
50
+ protected void initBinderForCatalogNumbers (WebDataBinder binder ) {
51
+ binder .registerCustomEditor (String .class , "catalogNumbers" , new StringTrimmerEditor (true ));
52
+ }
53
+
49
54
@ PatchMapping (
50
55
path = SeriesUrl .INFO_SERIES_PAGE ,
51
56
headers = "HX-Trigger=add-comment-form"
@@ -83,5 +88,49 @@ public String updateSeriesComment(
83
88
model .addAttribute ("comment" , comment );
84
89
return "series/partial/comment" ;
85
90
}
91
+
92
+ @ PatchMapping (
93
+ path = SeriesUrl .INFO_SERIES_PAGE ,
94
+ headers = "HX-Trigger=add-catalog-numbers-form"
95
+ )
96
+ public String addCatalogNumbers (
97
+ @ PathVariable ("id" ) Integer seriesId ,
98
+ @ Valid AddCatalogNumbersForm form ,
99
+ BindingResult result ,
100
+ @ AuthenticationPrincipal CustomUserDetails currentUser ,
101
+ Model model ,
102
+ HttpServletResponse response
103
+ ) throws IOException {
104
+
105
+ if (seriesId == null ) {
106
+ response .sendError (HttpServletResponse .SC_NOT_FOUND );
107
+ return null ;
108
+ }
109
+
110
+ if (!seriesService .isSeriesExist (seriesId )) {
111
+ response .sendError (HttpServletResponse .SC_NOT_FOUND );
112
+ return null ;
113
+ }
114
+
115
+ if (result .hasErrors ()) {
116
+ response .setStatus (HttpStatus .UNPROCESSABLE_ENTITY .value ());
117
+ model .addAttribute ("isHtmx" , true );
118
+ model .addAttribute ("seriesId" , seriesId );
119
+ return "series/info :: AddCatalogNumbersForm" ;
120
+ }
121
+
122
+ Integer currentUserId = currentUser .getUserId ();
123
+ seriesService .addCatalogNumbers (
124
+ form .getCatalogName (),
125
+ seriesId ,
126
+ form .getCatalogNumbers (),
127
+ currentUserId
128
+ );
129
+
130
+ // @todo #1671 AddCatalogNumbersForm: update a page without full reload
131
+ response .addHeader ("HX-Refresh" , "true" );
132
+
133
+ return null ;
134
+ }
86
135
87
136
}
0 commit comments