我正在开发JDeveloper 11g第2版。我的表单中包含af:input text
个元素和af:selectonechoice
个元素。问题出在af:selectonechoice
元素上。从此选项列表中选择一个值后,它会刷新其他元素的值。我的意思是af:inputtext的值丢失或字段变空。
af:selectonechoice的代码如下:
<af:selectOneChoice label="User Permission" id="soc"
value="#{row.bindings.UserPermission.inputValue}"
autoSubmit="true" valueChangeListener="#{SomeBean.setSomeValue}">
<af:selectItem label="Administrator" value="ADMIN" id="si1"/>
<af:selectItem label="Manager" value="MANAGER" id="si2"/>
<af:selectItem label="Employee" value="EMPLOYEE" id="si3"/>
</af:selectOneChoice>
以下是输入文字的代码:
<af:inputText value="XXX" label="XXX" id="id3" readOnly="true" partialTriggers="soc" >
</af:inputText>
只有上面的inputText有部分触发器。这很好用。另外我确信其他输入元素没有任何部分触发器。为什么其他输入元素也在更新。关于这个的任何想法。
修改
<af:column sortProperty="#{bindings.TasksView1.hints.TaskNo.name}"
sortable="true" headerText="Task No" id="c2">
<af:inputText value="#{row.bindings.TaskNo.inputValue}"
label="#{bindings.TasksView1.hints.TaskNo.label}" id="id3"
partialTriggers="soc">
</af:inputText>
</af:column>
ValueChangeLister的代码是:
public void generateTaskNo(ValueChangeEvent valueChangeEvent){
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding iterBind = (DCIteratorBinding)dcBindings.get("TasksView1Iterator");
valueChangeEvent.getComponent().processUpdates(FacesContext.getCurrentInstance());
String task_code = (String)iterBind.getCurrentRow().getAttribute("USERPERMISSION");
task_code = task_code +'-';
String task_no = (String)iterBind.getCurrentRow().getAttribute("TaskNo");
task_code = task_code + task_no;
iterBind.getCurrentRow().setAttribute("TaskNo", task_code );
}
这里我得到SelectOneChoice值和输入文本值[id为'id3']。根据所选选项的值[管理员,经理,员工],我将在该输入文本中设置值[TaskNo]。这不应该影响表单中的其他输入字段。但问题是所有其他输入字段也在更新并丢失其先前的值。我确信那些输入字段没有任何部分触发器。
答案 0 :(得分:0)
您选择的一个选项(SOC)设置为auto submit = true。然后任何元素都有SOC的部分触发器,然后刷新元素。元素SOC将其值提交给服务器,其他元素监听该值。听力元素需要刷新以更新他的SOC值
答案 1 :(得分:0)
对此的解决方案是,如果您使用选择一个选项组件,并将值列表存储在数据库中。假设您的存储“ID”数据类型包含整数,但在数据库存储列数据类型中包含Varchar,则单击save时会自动刷新soc组件。因此,您可以检查db列和值列表(lov)存储值。