Salesforce apex:未更新inputField绑定值
我正在使用Apex控制器和视觉力页面。 在vf页面内部,我有一个数据表,该表的每一行都绑定到从控制器生成的列表中的一个值 示例代码:Salesforce apex:未更新inputField绑定值,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,我正在使用Apex控制器和视觉力页面。 在vf页面内部,我有一个数据表,该表的每一行都绑定到从控制器生成的列表中的一个值 示例代码: <apex:dataTable value="{!List}" var="item" styleClass="class1" > ... <apex:column headerValue="Header1"> <apex:outputpanel rendered="{!NOT((a=='true'))}">
<apex:dataTable value="{!List}" var="item" styleClass="class1" >
...
<apex:column headerValue="Header1">
<apex:outputpanel rendered="{!NOT((a=='true'))}">
<div class='estimate-name-column'>
<apex:inputField value="{!item.Name}" required='true' rendered="{!(a=='false')}"/>
</div>
</apex:outputpanel>
</apex:column>
...
</apex:datatable>
...
...
如您所见,我试图根据某些条件隐藏一些输入字段
然而,有一个问题。如果我执行上述操作,则渲染的输入字段没有正确绑定。提交带有此数据表的表单后,在我的控制器中,列表Name
中的所有记录都是null
。尽管我在http请求中看到了“名称”
我猜渲染会干扰绑定吗?因为如果我删除重新提交的条件并显示所有InputField
,我可以在提交表单后在控制器内获得值
知道发生了什么吗?如果我没记错的话,页面上必须有一个apex标签才能重新提交 换句话说,某些东西(可能像
一样简单)必须是HTML格式,以便以后的AJAX更新将新内容注入占位符。如果未渲染,则将保持未渲染状态。(1)
尝试将条件移动到style
或styleclass
属性,而不是rendered
。差不多
<apex:inputField value="{!item.Name}"
required="{!a=='false'}"
style="display:{!IF(a=='false','inline', 'none')}"/>
脚注:
(1) 当然,除非您将重新提交一个包含“this”标记(XML中更高的标记)。谢谢!这正是我解决问题的方法。我通过css进行了显示/隐藏!