2017-12-26 35 views
0

InputText 필드에서 Enter 키를 누르면 데이터를 삽입 할 새 행을 만들려고합니다. 내가 입력 키를 누른 클라이언트와 서버 수신기를 입력 필드에 설정되어 있지만 작동하지 않는 경우 확인 자바를 사용하여 이것을 달성하려했습니다. 아무도 내가 잘못한 곳에서 나를 도울 수 있습니까? 내 JSFF 페이지 :Oracle ADF는 입력 텍스트의 Enter 키를 누를 때 새 행을 만듭니다.

<?xml version='1.0' encoding='UTF-8'?> 
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:af="http://xmlns.oracle.com/adf/faces/rich" 
      xmlns:f="http://java.sun.com/jsf/core"> 
      <af:resource type="javascript"> 
function handleEnterEvent() { 
    var _keyCode = evt.getKeyCode(); 
    if (_keyCode == AdfKeyStroke.ENTER_KEY){  
     var comp = evt.getSource(); 
     AdfCustomEvent.queue(comp, "EnterEvent", {fvalue:comp.getSubmittedValue()}, false); 
     evt.cancel(); 

    } 
} 
</af:resource> 
<af:table value="#{bindings.TransMstView1.collectionModel}" var="row" 
rows="#{bindings.TransMstView1.rangeSize}" 
     emptyText="#{bindings.TransMstView1.viewable ? 'No data to display.' : 'Access Denied.'}" 
     rowBandingInterval="0" fetchSize="#{bindings.TransMstView1.rangeSize}" id="t1"> 
<af:column headerText="#{bindings.TransMstView1.hints.TrNo.label}" id="c1"> 
    <af:inputText value="#{row.bindings.TrNo.inputValue}" label="#{bindings.TransMstView1.hints.TrNo.label}" 
       required="#{bindings.TransMstView1.hints.TrNo.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrNo.displayWidth}" 
       maximumLength="#{bindings.TransMstView1.hints.TrNo.precision}" 
       shortDesc="#{bindings.TransMstView1.hints.TrNo.tooltip}" id="it1"> 
    <f:validator binding="#{row.bindings.TrNo.validator}"/> 
    <af:convertNumber groupingUsed="false" pattern="#{bindings.TransMstView1.hints.TrNo.format}"/> 
    </af:inputText> 
</af:column> 
<af:column headerText="#{bindings.TransMstView1.hints.TrDt.label}" id="c2"> 
    <af:inputDate value="#{row.bindings.TrDt.inputValue}" label="#{bindings.TransMstView1.hints.TrDt.label}" 
       required="#{bindings.TransMstView1.hints.TrDt.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrDt.displayWidth}" 
       shortDesc="#{bindings.TransMstView1.hints.TrDt.tooltip}" id="id1"> 
    <f:validator binding="#{row.bindings.TrDt.validator}"/> 
    <af:convertDateTime pattern="#{bindings.TransMstView1.hints.TrDt.format}"/> 
    </af:inputDate> 
</af:column> 
<af:column headerText="#{bindings.TransMstView1.hints.TrMode.label}" id="c3"> 
    <af:inputText value="#{row.bindings.TrMode.inputValue}" label="#{bindings.TransMstView1.hints.TrMode.label}" 
       required="#{bindings.TransMstView1.hints.TrMode.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrMode.displayWidth}" 
       maximumLength="#{bindings.TransMstView1.hints.TrMode.precision}" 
       shortDesc="#{bindings.TransMstView1.hints.TrMode.tooltip}" id="it2"> 
    <f:validator binding="#{row.bindings.TrMode.validator}"/> 
    <af:convertNumber groupingUsed="false" pattern="#{bindings.TransMstView1.hints.TrMode.format}"/> 
    </af:inputText> 
</af:column> 
<af:column headerText="#{bindings.TransMstView1.hints.TrType.label}" id="c4"> 
    <af:inputText value="#{row.bindings.TrType.inputValue}" label="#{bindings.TransMstView1.hints.TrType.label}" 
       required="#{bindings.TransMstView1.hints.TrType.mandatory}" 
       columns="#{bindings.TransMstView1.hints.TrType.displayWidth}" 
       maximumLength="#{bindings.TransMstView1.hints.TrType.precision}" 
       shortDesc="#{bindings.TransMstView1.hints.TrType.tooltip}" id="it3"> 
    <f:validator binding="#{row.bindings.TrType.validator}"/> 
    <af:convertNumber groupingUsed="false" pattern="#{bindings.TransMstView1.hints.TrType.format}"/> 
    <af:clientListener method="handleEnterEvent" type="keyPress"/> 
    <af:serverListener type="EnterEvent" method="# 
{backingBeanScope.backing_mas.handleEnterEvent}"/> 
</af:inputText> 


</af:column> 
</af:table> 
</ui:composition> 

콩 백업 나의 방법은 버튼에 매핑 defaultCommand라는 특성을 가지고

public void handleEnterEvent(ClientEvent ce) { 

    ViewObject vo = this.getTransMstView1(); 
    vo.executeEmptyRowSet(); 
    Row row = vo.createRow(); 
    vo.insertRow(row); 
    vo.setCurrentRow(row); 

    } 
+0

JS 함수 handleEnterEvent에는 매개 변수 (evt)가 있어야합니다! –

+0

그게 작동하지 않았다. – SHA

답변

0

이 쉬운 솔루션이있다, 그리고 그 af:subform를 사용하는 것입니다, 이 버튼은 입력 텍스트를 입력 할 때 실행됩니다!

+0

af : subform은 내가 맞는 경우에만 양식에 사용할 수 있습니다. 하지만 내 요구 사항은 데이터 컨트롤을 드래그하고 테이블 뷰가 아니라 폼 뷰를 선택한다는 것입니다. – SHA