问题描述
我有一个场景,我将在 vf 页面上显示输入文本字段,当我输入一些值并单击搜索按钮时,应根据该关键字显示已关联的帐户。 我尝试了以下代码,但无法解决错误 UnkNown property 'VisualforceArrayList.Name' 下面是我的代码: 班级:
public class AccountswithKeywordfrompage {
public string keyword{get;set;}
public List<List<Account>> accountlist{get;set;}
public void Accounts(){
keyword = System.currentPageReference().getParameters().get('search');
accountlist=[FIND '+keyword' IN ALL FIELDS
RETURNING Account(Name)];
}
}
视频页面:
<apex:form>
<apex:inputText label="SearchAccounts" id="search">
<apex:commandButton value="search" action="{!Accounts}"/>
</apex:inputText>
<apex:pageblock>
<apex:pageblockTable value="{!accountlist}" var="accountobj">
<apex:outputlink value="{!accountobj.Name}"/>
</apex:pageblockTable>
</apex:pageblock>
</apex:form>
</apex:page>
谁能帮我解决这个问题?
解决方法
accountlist
是一个 List<List<Account>>
,这是错误的类型; SOSL 搜索返回 List<List<sObject>>
。碰巧您的 SOSL 搜索仅返回帐户结果。
当您遍历 List<List<sObject>>
时:
<apex:pageblockTable value="{!accountlist}" var="accountobj">
迭代变量的类型是List<Account>
,没有Name
属性。
最简洁的解决方案是将变量声明为 List<Account>
并从 SOSL 中提取返回的 List<List<sObject>>
的第一个元素。