【问题标题】:Checkbox In Oracle ADF Table: Not getting or setting dataOracle ADF 表中的复选框:未获取或设置数据
【发布时间】:2013-06-06 09:48:54
【问题描述】:

我有一个用 Oracle ADF 编写的应用程序。

在其中,我有一个表,我需要通过该表添加一个映射回 VARCHAR 列的复选框列。

我在我的视图对象中创建了一个临时布尔属性,它正确地设置了真实属性。此设置在我的业务组件测试器/浏览器中完美运行。但是,在我的 JSPX 中,根据瞬态属性获取复选框的表列不会获取或设置数据。

此设置完全按照此博客中所示完成:Adding Boolean Checkbox to Table Component in Oracle ADF 。例如,我的真实属性(即 varchar/string)称为 isCurrent。我创建了名为 isCurrentBoolean(布尔数据类型)的瞬态列,该列分别设置了 checkbox 属性。我使用 Row Implementation 类来正确设置这两个属性 - 这在 ADF 业务组件测试器/浏览器中完美运行。

但是,在我在 JSPX 页面上的表格中,启用了复选框的记录并未显示为选中状态。当我尝试设置数据时,我的提交过程没有运行期间(没有错误,它实际上没有运行)。

有什么想法吗?

谢谢!

更新 01:

我的瞬态布尔属性根据 string/varchar 属性正确获取数据,现在它只是设置数据部分不起作用。

在行实现类中,我添加了一条消息以在每次设置器为 IsCurrentBoolean 运行时触发。选中复选框时不会触发。我已将自动提交设置为 true。我会看看我是否还能做任何其他事情,但我可能只是在我的应用程序模块中添加一个方法,并在复选框的值更改侦听器中触发它 - 作为一种解决方法。

JSPX 代码:

<af:column sortProperty="IsCurrentBoolean" sortable="false" 
    headerText="Current?" id="c2" width="50">
<af:selectBooleanCheckbox value="#{row.IsCurrentBoolean}" id="sbc1" 
    autoSubmit="true" />

Row Impl Code:这是我的瞬态属性设置器(设置真实属性):

    if (value) {
        this.setProvPracIsCurrent("Y");
        setAttributeInternal(ISCURRENTBOOLEAN, value);
    } else {
        this.setProvPracIsCurrent("N");
        setAttributeInternal(ISCURRENTBOOLEAN, value);
    }

【问题讨论】:

    标签: oracle-adf jdeveloper


    【解决方案1】:

    这家伙是救世主:http://adfreusablecode.blogspot.com/2012/09/afselectbooleancheckbox-with-y-n-values.html

    基本上,我使用瞬态属性摆脱了瞬态属性和 ADF 表列。

    相反,我使用了映射回数据库的属性 (String/VarChar)。

    将属性添加到我的表格中,这创建了一个输入文本框。将输入文本转换为复选框。删除了嵌套在转换后的复选框中的验证器标签。

    创建了一个转换的转换器来在布尔和字符串之间进行转换。使用以下代码创建一个类:

      import java.util.Collection;
    import java.util.Collections;
    
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    
    import org.apache.myfaces.trinidad.convert.ClientConverter;
    
    
    public class YNConverter implements Converter, ClientConverter {
        public YNConverter() {
            super();
        }
      public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
       {
         return "true".equals(value) ? "Y" : "N";
       }
    
       public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value)
       {
         return "Y".equals(value) ? "true" : "false";
       }
    
       public String getClientLibrarySource(FacesContext facesContext)
       {
         return null;
       }
    
       public Collection<String> getClientImportNames()
       {
         return Collections.emptySet();
       }
    
       public String getClientScript(FacesContext facesContext, UIComponent uiComponent)
       {
         return null;
       }
    
       public String getClientConversion(FacesContext facesContext, UIComponent uiComponent)
       {
         return null;
       }
    }
    

    在 faces-config.xml 中,添加类并将其定义为转换器。将其命名为 YNConverter。

    在 JSP 页面中,我的复选框如下所示:

       <af:selectBooleanCheckbox value="#{row.bindings.ProvPracIsCurrent.inputValue}"
                                                          label="#{bindings.Ppsqnd4UppUpViewView.hints.ProvPracIsCurrent.label}"
                                                          required="#{bindings.Ppsqnd4UppUpViewView.hints.ProvPracIsCurrent.mandatory}"
                                                          shortDesc="#{bindings.Ppsqnd4UppUpViewView.hints.ProvPracIsCurrent.tooltip}"
                                                          id="it12"
                                                          converter="YNConverter"/>
    

    轰隆隆。完毕。

    【讨论】:

      【解决方案2】:

      当你说你写的和帖子一模一样时,你是否也在可更新部分将属性设置为“ALWAYS”!

      我还希望您包含具有复选框的页面 sn-p

      【讨论】:

      • 是 可更新设置为始终。我很快就会包含一些 sn-ps 代码
      • 我添加了一个代码sn-p。如果您注意到,我将 value 属性设置为 #{row.IsCurrentBoolean}。它最初是#{row.bindings.IsCurrentBoolean}。不幸的是,row.bindings.IsCurrentBoolean 没有返回任何数据或正面结果。当我将其更改为 #{row.IsCurrentBoolean} 时,它至少可以正确获取数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      相关资源
      最近更新 更多