根据 vf 页面中的关键字显示记录

问题描述

我有一个场景,我将在 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>> 的第一个元素。