2013-10-01 1 views
1

풍부한 : inplaceInput을 rich : dataTable 내에서 사용하여 편집 가능한 행을 구현하려고합니다. 여기서 문제는 편집 된 값이 Backing Bean에 반영되지 않는다는 것입니다.데이터 테이블 내 inplaceInput 내 백 bean의 값을 업데이트하지 않는

<rich:column width="200px"> 
    <f:facet name="header"> 
     <h:outputText value="Roles" /> 
    </f:facet> 

    <rich:inplaceInput id="roleText" value="#{role}" inputWidth="60px" controlsHorizontalPosition="right" 
         showControls="true" editEvent="none"> 
     <f:facet name="controls"> 
      <h:panelGroup> 
       <h:commandButton id="saveEdit" value="Save" 
            action="#{manageRolesBean.editRoleAction}" 
            image="/images/indicator_accept.gif" alt="Save" /> 

       <h:commandButton id="cancelEdit" value="Cancel" 
            onclick="#{rich:component('rolesForm:roleText')}.cancel(); return false;" 
            image="/images/indicator_reject.gif" alt="Cancel" /> 
      </h:panelGroup> 
     </f:facet> 
    </rich:inplaceInput> 
</rich:column> 

[저장] 버튼을 누르면 백킹 빈에 빈 문자열이 표시됩니다. 나는 A4J 사용하여 시도했다 : 클라이언트 측에서 값을 읽어 actionParam,하지만 그 중 하나가 작동하지 않습니다

<a4j:actionparam name="editedValue" value="#{rich:findComponent('roleText').value}" assignTo="#{manageRolesBean.role.name}" /> 

을 내가 JSF 1.2 RichFaces의 3.3.X.로 제한 해요 here에 설명 된 솔루션은 최신 버전을 참조합니다. Backing Bean에 편집 된 값을 저장하려면 어떻게해야합니까?

답변

0

아래 코드에서 Backing Bean 및 값 변경 리스너로 Seam 구성 요소를 사용했습니다. 희망이 도움이됩니다.

<h:form> 
... 
    <rich:column ...>   
     <rich:inplaceInput id="someString" value="#{someSeamComponent.someString}" 
          valueChangeListener="#{someSeamComponent.process}"> 
      <a:support event="onviewactivated"/> 
     </rich:inplaceInput> 
    </rich:column> 
... 
</h:form> 

import org.jboss.seam.annotations.Name; 
import javax.faces.event.ValueChangeEvent; 

@Name("someSeamComponent") 
public class SomeSeamComponent { 
    private String someString; 

    // getters and setters 

    public void process(ValueChangeEvent event) { 
     // event.getSource().getId() -> to distinguish the source. you may construct id using rowKeyVar or smth 
     Object newVal = event.getNewValue(); 
    } 
} 

힌트 : someString 트리거에도 새로운 값이 설정되어 있습니다.

관련 문제