2014-07-12 1 views
0

의 바닥 글에, 열 예를 들어

<p:dataTable var="price" value="#{testManagedBean.price}" rowIndexVar="rowIndex"> 

    <p:column headerText="Index"> 
     <h:outputText value="#{rowIndex+1}"/> 
    </p:column> 

    <p:column headerText="Price" style="text-align: right;"> 
     <h:outputText value="#{price}"/> 

     <f:facet name="footer"> 
      <c:set var="total" value="${total+price}"/> 
      <h:outputText value="#{total}"/> 
     </f:facet> 
    </p:column> 
</p:dataTable> 

의 관리 빈을 데이터 테이블 컬럼의 요약을 표시합니다 항목의 목록의 총은

가에 표시 될

@ManagedBean 
@ViewScoped 
public final class TestManagedBean implements Serializable 
{ 
    private List<BigDecimal>price; 
    private static final long serialVersionUID = 1L; 

    @PostConstruct 
    public void init() 
    { 
     price=new ArrayList<>(); 
     price.add(new BigDecimal(50)); 
     price.add(new BigDecimal(100)); 
     price.add(new BigDecimal(150)); 
     price.add(new BigDecimal(200)); 
     price.add(new BigDecimal(250)); 
     price.add(new BigDecimal(300)); 
    } 

    public List<BigDecimal> getPrice() { 
     return price; 
    } 
} 
보행인.

JSTL을 사용하여이 합계를 수행 할 수 있습니까? 그렇지 않으면 백킹 빈 자체에서이 합계를 수행하지 않는 방법이 있습니까?

현재 JSTL <c:set>을 사용한 작업은 연관된 열의 바닥 글에 0을 산출합니다.

+0

수 있습니다 ? 나는 그것이 훨씬 더 좋을 것이라고 생각하고 표준 컨버터를 사용하여 올바른 형식을 얻을 수있다. –

+0

적어도 3 개의 빈에서 backing bean 메소드를 반복해야하는 상황이 내 응용 프로그램에있다. 대신이 합계를 XHTML 페이지에서 수행 할 수 있다면 동일한 논리를 두 번 이상 반복하지 않아도됩니다 (관련 변환기는 XHTML 페이지에서도 잘 작동합니다.이 예제에서는 단순함을 위해서). – Tiny

답변

0

이런 식으로 뭔가 나를 위해 작동합니다

 <c:set var="total" value="0"/> 
     <c:forEach items="#{testManagedBean.price}" var="t"> 
      <c:set var="total" value="#{total + t}"/> 
     </c:forEach> 
     <h:outputText value="#{total}"/> 

내가 아이디어를 거부하지 않습니다 왜 빈에서 getTotal() 메소드를 갖고 싶어하지 않습니다이 최적화 할 :-)