2015-01-07 1 views
2

다음 Primefaces 페이지와 컨트롤러가 있습니다.요소 유형 "p : dataList"와 연관된 속성 "pt : data-inset"의 접두사 "pt"가 바인드되지 않았습니다.

@ManagedBean(name = LikedItemsView.NAME) 
@SessionScoped 
public class LikedItemsView { 
    public static final String NAME = "likeditems"; 

    public List<LikedItem> getLikedItems() 
    { 
     final LikedItem item1 = new LikedItem(); 
     item1.setTitle("Product 1"); 
     item1.setPrice(Money.of(CurrencyUnit.USD, 20)); 
     item1.setUrl("http://google.com"); 

     final LikedItem item2 = new LikedItem(); 
     item2.setTitle("Product 2"); 
     item2.setPrice(Money.of(CurrencyUnit.USD, 30)); 
     item2.setUrl("http://yandex.ru"); 

     final List<LikedItem> items = new LinkedList<LikedItem>(); 
     items.add(item1); 
     items.add(item2); 

     return items; 
    } 
} 

내가 페이지에 액세스 할 때, 나는 오류 다음 얻을

페이지

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:pm="http://primefaces.org/mobile"> 

<f:view renderKitId="PRIMEFACES_MOBILE"/> 

<h:head> 

</h:head> 

<h:body id="body"> 

    <pm:page id="page"> 
     <pm:header title="MyProduct"> 
     </pm:header> 

     <pm:content id="content"> 
      <p:dataList value="#{likeditems.likedItems}" var="item" pt:data-inset="true" paginator="true" rows="5"> 
       <f:facet name="header"> 
        List of Cars 
       </f:facet> 
       <h:outputLink value="#{item.url}"> 
        <h2>#{item.title}</h2> 
        <p>#{item.price}</p> 
        <p class="ui-li-aside"><strong>XXXX</strong></p> 
       </h:outputLink> 
       <f:facet name="footer"> 
        List of Cars 
       </f:facet> 
      </p:dataList> 
      <p:outputLabel 
        id="priceHint" 
        value="..." 
        cache="false"/> 
     </pm:content> 

     <pm:footer title="m.MyProduct.info"></pm:footer> 
    </pm:page> 
</h:body> 

</html> 

컨트롤러 :

servlet.ServletException: Error Parsing /likeditems.xhtml: Error Traced[line: 31] The prefix "pt" for attribute "pt:data-inset" associated with an element type "p:dataList" is not bound. 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) 

라인 (31)은 이것이다 :

<p:dataList value="#{likeditems.likedItems}" var="item" pt:data-inset="true" paginator="true" rows="5"> 

어떻게이 오류를 해결할 수 있습니까?

+1

pt : data-inset 대신 데이터 인셋이되어야합니다. –

+0

@PradyumnaSwain 도움이되었습니다. 귀하의 의견을 답변으로 제출해 주시면 동의하겠습니다. 감사! –

+0

welcome buddy. 제 대답을 받아주세요. –

답변

3

data-inset attribtue 기본적 <p:dataList>에서 지원하지 않는해야합니다. 또한 접두사가 data-* 인 모든 속성 이름은 가장 명확하게 HTML5 related입니다. 따라서 다른 사람이 제안한대로 접두어 pt을 제거하는 것이 올바른 해결책이 아닙니다. 속성은 전혀 렌더링되지 않습니다. 당신은 전체 속성을 완전히 제거 할 수 있습니다.

XML 네임 스페이스 접두어 pt은 "통과"에 대한 약식을 나타내며이 속성은 통과 스팸 속성으로 인식 할 수있는 특정 코드 단편에 있습니다. 이것은 JSF 2.2 특정 기능으로 "HTML5 friendly markup"의 일부입니다.

정확한 XML 네임 스페이스 URI는 http://xmlns.jcp.org/jsf/passthrough입니다.

<html ... xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"> 

은 offical 한 XML 네임 스페이스 접두사 (또한 자습서를 참조) p 떨어져 있음을 알아,하지만 PrimeFaces에 대한 하나 그것은 그렇지 않으면 충돌 마십시오. 나는 개인적으로 "속성"을 나타내는 a을 사용합니다.

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough"> 
... 
<p:dataList ... a:data-inset="true"> 

당신은 JSF 2.2를 사용하지 않는, 또는 클라이언트 측에서 그 속성에 대한 사용이없는 경우, 다음, 음, 단지 모두 제거합니다. 그것은 분명히 copypasted 코드에서 남은 것입니다.

0

data-inset 만 대신 pt:data-inset

관련 문제