Skip to content

Commit e39b9e5

Browse files
authored
Merge pull request #23 from wimdeblauwe/feature/header-constants
Add all constants to HtmxResponseHeader
2 parents fe42934 + 23f262e commit e39b9e5

File tree

3 files changed

+25
-27
lines changed

3 files changed

+25
-27
lines changed

src/main/java/io/github/wimdeblauwe/hsbt/mvc/HtmxHandlerInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private void setHxTrigger(HttpServletResponse response, Method method) {
3434
private void setHxRefresh(HttpServletResponse response, Method method) {
3535
HxRefresh methodAnnotation = AnnotatedElementUtils.findMergedAnnotation(method, HxRefresh.class);
3636
if (methodAnnotation != null) {
37-
response.setHeader("HX-Refresh", "true");
37+
response.setHeader(HX_REFRESH.getValue(), "true");
3838
}
3939
}
4040

src/main/java/io/github/wimdeblauwe/hsbt/mvc/HtmxResponseHeader.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package io.github.wimdeblauwe.hsbt.mvc;
22

33
public enum HtmxResponseHeader {
4+
HX_PUSH("HX-Push"),
5+
HX_REDIRECT("HX-Redirect"),
6+
HX_REFRESH("HX-Refresh"),
7+
HX_RETARGET("HX-Retarget"),
48
HX_TRIGGER("HX-Trigger"),
59
HX_TRIGGER_AFTER_SETTLE("HX-Trigger-After-Settle"),
610
HX_TRIGGER_AFTER_SWAP("HX-Trigger-After-Swap");

src/main/java/io/github/wimdeblauwe/hsbt/mvc/HtmxViewHandlerInterceptor.java

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,18 @@
1515
*/
1616
package io.github.wimdeblauwe.hsbt.mvc;
1717

18-
import java.util.Locale;
19-
import java.util.Map;
20-
21-
import javax.servlet.http.HttpServletRequest;
22-
import javax.servlet.http.HttpServletResponse;
23-
2418
import com.fasterxml.jackson.databind.ObjectMapper;
2519
import org.slf4j.Logger;
2620
import org.slf4j.LoggerFactory;
2721
import org.springframework.beans.factory.ObjectFactory;
28-
import org.springframework.core.annotation.AnnotatedElementUtils;
2922
import org.springframework.util.Assert;
3023
import org.springframework.web.method.HandlerMethod;
31-
import org.springframework.web.servlet.HandlerInterceptor;
32-
import org.springframework.web.servlet.LocaleResolver;
33-
import org.springframework.web.servlet.ModelAndView;
34-
import org.springframework.web.servlet.View;
35-
import org.springframework.web.servlet.ViewResolver;
24+
import org.springframework.web.servlet.*;
25+
26+
import javax.servlet.http.HttpServletRequest;
27+
import javax.servlet.http.HttpServletResponse;
28+
import java.util.Locale;
29+
import java.util.Map;
3630

3731
/**
3832
* A {@link HandlerInterceptor} that turns {@link HtmxResponse} instances returned from controller methods into a
@@ -92,27 +86,27 @@ private void addHxHeaders(HtmxResponse htmxResponse, HttpServletResponse respons
9286
setTriggerHeader(HxTriggerLifecycle.SETTLE, htmxResponse.getTriggersAfterSettle(), response);
9387
setTriggerHeader(HxTriggerLifecycle.SWAP, htmxResponse.getTriggersAfterSwap(), response);
9488

95-
if(htmxResponse.getHeaderPushHistory() != null) {
96-
response.setHeader("HX-Push", htmxResponse.getHeaderPushHistory());
89+
if (htmxResponse.getHeaderPushHistory() != null) {
90+
response.setHeader(HtmxResponseHeader.HX_PUSH.getValue(), htmxResponse.getHeaderPushHistory());
9791
}
98-
if(htmxResponse.getHeaderRedirect() != null) {
99-
response.setHeader("HX-Redirect", htmxResponse.getHeaderRedirect());
92+
if (htmxResponse.getHeaderRedirect() != null) {
93+
response.setHeader(HtmxResponseHeader.HX_REDIRECT.getValue(), htmxResponse.getHeaderRedirect());
10094
}
101-
if(htmxResponse.getHeaderRefresh()) {
102-
response.setHeader("HX-Refresh", "true");
95+
if (htmxResponse.getHeaderRefresh()) {
96+
response.setHeader(HtmxResponseHeader.HX_REFRESH.getValue(), "true");
10397
}
104-
if(htmxResponse.getHeaderRetarget() != null) {
105-
response.setHeader("HX-Retarget", htmxResponse.getHeaderRetarget());
98+
if (htmxResponse.getHeaderRetarget() != null) {
99+
response.setHeader(HtmxResponseHeader.HX_RETARGET.getValue(), htmxResponse.getHeaderRetarget());
106100
}
107101
}
108102

109103
private void setTriggerHeader(HxTriggerLifecycle triggerHeader, Map<String, String> triggers, HttpServletResponse response) {
110-
if(triggers.isEmpty()) {
104+
if (triggers.isEmpty()) {
111105
return;
112106
}
113-
if(triggers.size() == 1) {
107+
if (triggers.size() == 1) {
114108
Map.Entry<String, String> singleHeader = triggers.entrySet().stream().findFirst().orElseThrow();
115-
if(singleHeader.getValue() == null || singleHeader.getValue().isBlank()) {
109+
if (singleHeader.getValue() == null || singleHeader.getValue().isBlank()) {
116110
response.setHeader(triggerHeader.getHeaderName(), singleHeader.getKey());
117111
} else {
118112
try {
@@ -137,9 +131,9 @@ private View toView(HtmxResponse partials) {
137131
return (model, request, response) -> {
138132
Locale locale = locales.getObject().resolveLocale(request);
139133
for (String template : partials.getTemplates()) {
140-
views.resolveViewName(template, locale)
141-
.render(model, request, response);
142-
134+
View view = views.resolveViewName(template, locale);
135+
Assert.notNull(view, "Template '" + template + "' could not be resolved");
136+
view.render(model, request, response);
143137
}
144138
};
145139
}

0 commit comments

Comments
 (0)