我正在使用Visualforce创建类似Google的应用程序,用户输入搜索字词,点击搜索,结果显示在搜索框下方。作为其中一部分,当用户单击“搜索”时,将设置actionStatus以在搜索过程中显示“正在加载...”:
<apex:commandButton value="Search" action="{!runQuery}" status="loading"/>
现在我正在尝试设置登录页面,该页面只是一个带有输入字段和搜索按钮的页面,用于初始搜索。在Google风格中,第一次搜索会将用户带到显示结果的页面,搜索框会移到顶部。
问题是我不知道如何在页面加载时调用actionStatus。当用户点击按钮时很容易,但是当从登录页面搜索时,会加载新页面并然后执行搜索。目前我只是让控制器的构造函数检查参数,如果找到任何参数,则手动调用runQuery()
,但这只会延迟页面加载时间而不会调用actionStatus。
有什么想法吗?
答案 0 :(得分:2)
使用
<apex:actionFunction name="runQueryJS" action="{!runQuery}" status="loading" />
创建一个客户端调用点,然后在body的加载事件(或者你想要运行查询的其他地方)附加一个处理程序,它将调用runQueryJS()
javascript函数,该函数将执行Ajax调用以进行搜索
答案 1 :(得分:1)
添加onLoad事件调用不起作用,但将其放在页面的最后,就在结束apex:page
标记之前。我不完全确定为什么,但它很干净并完成工作。
<script>
runQuery();
</script>