Skip to content

Commit e575afb

Browse files
Carsten Dimmekhenningn
authored andcommitted
feat: added support for viewParams in tc:page
1 parent 95d8955 commit e575afb

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

tobago-core/src/main/java/org/apache/myfaces/tobago/component/Attributes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ public enum Attributes {
137137
immediate,
138138
icon,
139139
image,
140+
includeViewParams,
140141
inline,
141142
itemDescription,
142143
itemDisabled,

tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIPage.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ public void markSubmittedForm(final FacesContext facesContext) {
133133

134134
public abstract String getFocusId();
135135

136+
public abstract boolean isIncludeViewParams();
137+
136138
private static class FindCommandVisitor implements VisitCallback {
137139
private UIComponent command;
138140

tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/PageRenderer.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public void encodeBeginInternal(final FacesContext facesContext, final T compone
131131
final ViewHandler viewHandler = application.getViewHandler();
132132
final UIViewRoot viewRoot = facesContext.getViewRoot();
133133
final String viewId = viewRoot.getViewId();
134-
final String formAction = externalContext.encodeActionURL(viewHandler.getActionURL(facesContext, viewId));
134+
final String formAction = getActionUrl(facesContext, viewId, component);
135135
final PartialViewContext partialViewContext = facesContext.getPartialViewContext();
136136

137137
final String contentType = writer.getContentTypeWithCharSet();
@@ -254,6 +254,17 @@ public void encodeBeginInternal(final FacesContext facesContext, final T compone
254254
}
255255
}
256256

257+
private String getActionUrl(final FacesContext facesContext, final String viewId, final T component) {
258+
final ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
259+
final String actionUrl;
260+
if (component.isIncludeViewParams()) {
261+
actionUrl = viewHandler.getBookmarkableURL(facesContext, viewId, Map.of(), true);
262+
} else {
263+
actionUrl = viewHandler.getActionURL(facesContext, viewId);
264+
}
265+
return facesContext.getExternalContext().encodeActionURL(actionUrl);
266+
}
267+
257268
private void encodeHead(
258269
final FacesContext facesContext, final T component, final TobagoContext tobagoContext,
259270
final TobagoResponseWriter writer, final UIViewRoot viewRoot, final String contextPath) throws IOException {

tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/PageTagDeclaration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,8 @@ public interface PageTagDeclaration
8181
@TagAttribute
8282
@UIComponentTagAttribute()
8383
void setFocusId(String focusId);
84+
85+
@TagAttribute
86+
@UIComponentTagAttribute(type = "boolean", defaultValue = "false")
87+
void setIncludeViewParams(String includeViewParams);
8488
}

0 commit comments

Comments
 (0)