【问题标题】:Oracle ADF create new row on pressing Enter key on inputtextOracle ADF 在输入文本上按 Enter 键创建新行
【发布时间】:2018-08-22 00:11:47
【问题描述】:

当我在 InputText 字段中按回车键时,我想创建新行来插入数据。我试图通过使用 Javascript 检查是否按下了输入键并将客户端和服务器侦听器设置为输入字段来实现这一点,但似乎不起作用。谁能帮助我我哪里出错了? 我的 JSFF 页面:

<?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>

我在backing bean中的方法:

  public void handleEnterEvent(ClientEvent ce) {

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

  }

【问题讨论】:

  • 你的JS函数handleEnterEvent应该有一个参数(evt)!
  • 那行不通。

标签: javascript oracle oracle-adf


【解决方案1】:

有一个更简单的解决方案,那就是使用af:subform,它有一个名为defaultCommand的属性,它映射到一个按钮,当你在输入文本上按下回车时,这个按钮将被执行!

【讨论】:

  • af:subform 只有在我正确的情况下才适用于表单。但我的要求是我拖动数据控件并选择表格视图而不是表单视图。
猜你喜欢
  • 2017-04-29
  • 2019-05-10
  • 2013-11-20
  • 2016-08-19
  • 1970-01-01
  • 2014-02-12
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多