내 페이지 탐색 대부분의 요청을 얻을 사용하고 지금은 매개 변수가 h:commandButton
또는 내부 f:param
를 사용하여 쿼리 문자열 매개 변수로 포함되어야하는 형태가 includeViewParams
의 속성을 검사하여 UIViewParameter
을 사용합니다.JSF - F에서 URL 쿼리 문자열을 만들 내장 방법 : PARAM 및 includeViewParams
나는 모든보기 정의 된 매개 변수를 포함 할 것이 이후 includeViewParams
를 사용하지 않는, 그냥 아이의 명령 구성 요소로 제공하는 사람을 사용하고 싶습니다.
<h:form>
<p:inputText value="#{bean.value1}"/>
<p:selectOneMenu value="#{bean.value2}"/>
<p:commandButton action="#{utilBean.performActionParams(outcome)}">
<f:param name="key1" value="#{bean.value1}"/>
<o:param name="key1" value="#{bean.value2}" converter="#{bean.converter}/>
</p:commandButton>
</h:form>
public String performActionParams(final String outcome)
{
final UriBuilder uriBuilder = UriBuilder.fromPath(outcome);
final FacesContext context = FacesContext.getCurrentInstance();
final UIComponent component = UIComponent.getCurrentComponent(context);
for (final UIComponent child : component.getChildren())
if (child instanceof UIParameter)
{
final UIParameter param = (UIParameter) child;
if (!param.isDisable() && !StringUtils.isBlank(param.getName()))
{
final Object value = param.getValue();
if (value != null)
uriBuilder.queryParam(param.getName(), value);
}
}
return uriBuilder.build().toString();
}
이 논리는 정말 복잡하지 않고는 h:link
및 h:button
에서와 같은 논리로 보이기 때문에 그렇게 중복 보인다.
누군가이 로직이 구현되는 것을 알고 있습니까?
와
정말 당신의 질문을 이해하지 마십시오. 체크는'ViewDeclarationLanguage.getViewMetadata()'를 호출하여'RESTORE_VIEW' 단계에서 수행됩니다. 당신의 경우에는'ViewMetadata' 인스턴스를 돌려 줄 것입니다 ** ** GET 네비게이션 *과 *를 사용하기 때문에 도착 페이지는 ' '입니다. 귀하의 질문은 무엇인가? 메타 데이터 처리를 재정의 하시겠습니까? –
kolossus
jsf의 어딘가에'h : link'에서'f : param'을 읽고 대상 URI를 생성하는 코드가 있어야합니다. 나는 기본적으로 회피책이며, 명령 단추를 사용하기 위해서'h : link'와 동일한 기능을하는 코드를 게시했다. Jsf 어딘가에 이미 코딩되어 있기 때문에 제 코드가 중복 된 것 같아요. – djmj