2012-10-11 6 views
0

JSF 2 문제입니다. 내 양식에 숨겨진 편집 영역이 있습니다. 사용자가 편집 버튼을 클릭하면 bean 속성을 true로 설정하여 영역을 표시하고 (이 작업은 간단합니다) 편집중인 값으로 다른 bean 속성을 설정합니다. 이 변수는 다음과 같이 표시됩니다.빈의 빈 문자열이 h : inputText의 이전 값을 덮어 쓰지 않음

<h:inputText value="#{bean.stringValue}" /> 

사용자가 편집을 취소하면 편집 영역이 숨겨집니다.

사용자가 다른 항목을 편집하려고하지만이 값은 빈 문자열 ("")입니다. 동일한 코드를 사용하면 stringValue가 emptyString으로 설정되고 영역이 표시됩니다.

그러나 빈 텍스트 상자가 아닌 이전 편집의 값이 표시됩니다.

JavaScript를 사용하지 않고이 방법을 사용할 수 있습니까?

편집 : 다음은 SSCCE에 가능한 한 가까이 있습니다. 보시다시피, 나는 테이블 내부 편집을 활성화하고 있습니다. 나는 또한 ICEfaces를 사용하고 있지만이 경우 특별한 것은 없다.

<table> 
<tbody> 
    <ui:repeat var="cfi" 
     value="#{evDetailBean.completeEvent.listCompleteCashFlowItems}"> 
     <ice:panelGroup rendered="#{!cfi.editThisOne}"> 
      <tr> 
       <td>#{cfi.cfiName}</td> 
       <td>#{cfi.absOfAmount}</td> 
       <td>#{cfi.frequencyDescr}</td> 
       <td>#{cfi.cfiToFrom}</td> 
       <td>#{cfi.assetPoolName}</td> 
       <td style="text-align: center"><h:commandLink 
         actionListener="#{cfi.editCfiListener}" value="Edit" />&#160;&#160;&#160;&#160;<h:commandLink 
         value="Delete" actionListener="#{cfi.deleteCfiListener}" /> 
       </td> 
      </tr> 
     </ice:panelGroup> 
     <ice:panelGroup rendered="#{cfi.editThisOne}"> 
      <tr> 
       <td><ice:inputText value="#{evDetailBean.newCFIName}" 
        style="width:118px;" partialSubmit="true" immediate="true" validator="#{evDetailBean.valNewCFIName}" /></td> 
       <td>xxx</td> 
       <td>xxx</td> 
       <td>xxx</td> 
       <td>xxx</td> 
       <td style="text-align: center;"><ice:commandButton 
        value="Save" immediate="true" 
         actionListener="#{evDetailBean.saveEditCfiListener}" 
         styleClass="plumvo-button" 
         style="float:left; vertical-align: middle;" />&#160;&#160;&#160; 
        <ice:commandLink value="Cancel" style="vertical-align: middle;" 
         actionListener="#{cfi.cancelEditCfiListener}" /></td> 
      </tr> 
     </ice:panelGroup> 
    </ui:repeat> 
</tbody> 

그리고 이것은 (일부)이의 actionListener입니다 : 당신의 도움에 미리

public void editCfiListener(ActionEvent e) { 

EvDetailBean evDetailBean = completeEvent.getEvDetailBean(); 

evDetailBean.setNewCFIName(this.getCfiName()); 

// initialize more fields 

editThisOne = true; // This causes the row being edited to open up with modifiable fields. 

}

감사합니다.

+0

값을 빈 문자열로 재설정하는 방법을 보여줄 수 있습니까? 또한 inputText가 뷰의 목록에있는 다른 항목에 대해 어떻게 defind 하는지를 보여줄 수 있습니다. –

+0

SSCCE를 보여주십시오. 문제의 용어 또는 모호성이 분명히 있습니다. – BalusC

답변

0

stringValue이 ""이면 제출 후 콩을 체크하고, 그렇다면 null로 설정하고 visible 속성을 false으로 설정하십시오.

+0

BalusC의 답변에서 rendered = false가 작동하지 않는 이유와 동일한 이유로 false를 표시하도록 설정할 수 있다고 생각하지 않습니다. 사용자는 입력 할 텍스트 상자를 얻지 못합니다. –

0

조치, 편집 버튼 클릭시 호출하는 빈 기능. 안에있는 stringValue 변수를 지우십시오.

관련 문제