h : commandLink 대신 h : outputLink를 언제 사용해야합니까?
언제 <h:outputLink>
대신 <h:commandLink>
?를 사용해야 합니까?
나는 commandLink
HTTP 게시물을 생성 한다는 것을 이해합니다 . outputLink
HTTP 가져 오기를 생성 할 것이라고 생각합니다 . 즉, 내가 읽은 대부분의 JSF 튜토리얼 자료 는 commandLink
(거의?) 독점적으로 사용합니다.
컨텍스트 : Stack Overflow와 비슷한 사용자 페이지에 대한 헤더 링크를 보여주는 작은 데모 프로젝트를 구현하고 있습니다 ...
... commandLink
아마도 ?faces-redirect=true
북마크 가능성을 사용 하는지 또는 outputLink
올바른 선택 인지 확실하지 않습니다 .
이 북마크는 북마크 가능한 GET 요청을 발생시키는 속성에 적절한 URL을 가진 <h:outputLink>
완전한 HTML <a>
요소를 렌더링합니다 href
. 관리 Bean 조치 메소드를 직접 호출 할 수 없습니다.
<h:outputLink value="destination.xhtml">link text</h:outputLink>
은 (숨겨진) POST 양식을 제출하고 관리 Bean 조치 메소드를 호출 할 수 있는 스크립트 <h:commandLink>
로 HTML <a>
요소를 렌더링합니다 onclick
. 또한 안에 배치해야합니다 <h:form>
.
<h:form>
<h:commandLink value="link text" action="destination" />
</h:form>
POST 후 리디렉션을 트리거하는 의 ?faces-redirect=true
매개 변수 <h:commandLink>
( Post-Redirect-Get 패턴에 따라)는 링크를 실제로 클릭 할 때만 대상 페이지의 책갈피 기능을 향상시킵니다 (URL은 더 이상 "뒤에 있지 않습니다"). 하지만 요소 href
의 <a>
요소를 완전한 URL로 변경하지는 않습니다 . 여전히 남아 있습니다 #
.
<h:form>
<h:commandLink value="link text" action="destination?faces-redirect=true" />
</h:form>
JSF 2.0부터는 <h:link>
URL 대신보기 ID (탐색 사례 결과)를 사용할 수있는 것도 있습니다. <a>
에 적절한 URL을 사용하여 HTML 요소를 생성합니다 href
.
<h:link value="link text" outcome="destination" />
따라서 SO 사용자 이름 링크와 같이 순수하고 북마크 가능한 페이지 간 탐색을 위해서는 <h:outputLink>
또는 을 사용하십시오 <h:link>
. 봇은 일반적으로 POST 양식이나 JS 코드를 암호화하지 않기 때문에 SEO에도 더 좋습니다. 또한 페이지를 북마크 할 수 있고 URL이 더 이상 "뒤에"있지 않으므로 UX가 향상됩니다.
당신이 생성자 또는 전처리 작업을 수행 할 수 있습니다 필요한 경우 @PostConstruct
(A)의 @RequestScoped
또는 @ViewScoped
@ManagedBean
어떤 문제의 대상 페이지에 연결되어 있습니다. GET 매개 변수를 사용 @ManagedProperty
하거나 <f:viewParam>
Bean 특성으로 설정할 수 있습니다 .
또한보십시오:
- ViewParam과 @ManagedProperty (value = "# {param.id}")
- <f : metadata>, <f : viewParam> 및 <f : viewAction>을 무엇에 사용할 수 있습니까?
- 매개 변수보기 기능을 통한 책갈피 가능성
- JSF에서 탐색하는 방법? URL이 현재 페이지를 반영하도록하는 방법 (이전 페이지는 아님)
또한 h : link보다 h : commandLink를 사용하는 데 페이지 로딩 (성능)에 시간이 오래 걸린다는 것을 알았습니다. h : link는 h : commandLink에 비해 빠릅니다.
참고 URL : https://stackoverflow.com/questions/4317684/when-should-i-use-houtputlink-instead-of-hcommandlink
'Programing' 카테고리의 다른 글
void * 란 무엇이며 어떻게 사용합니까? (0) | 2020.07.05 |
---|---|
Kotlin-Android : 확인되지 않은 참조 데이터 바인딩 (0) | 2020.07.05 |
해시 테이블과 Trie (접두사 트리) 중에서 어떻게 선택합니까? (0) | 2020.07.05 |
자바 스크립트 스위치 vs. if… else if ... else (0) | 2020.07.05 |
Eclipse 디버거에서 되돌아가는 방법? (0) | 2020.07.05 |