命令按钮用于在服务器上执行一些代码,它们返回一个 PageReference,而不是一个字符串/json 值。
<apex:commandButton action="{!whatever}" value="myButton" reRender="sectionX" />
因此,该方法whatever
应该完成工作,然后将结果分配给控制器上的公共属性,以便页面可以显示结果。rerender 属性表示重新加载 outputpanel 中的数据sectionX
。SectionX 需要包含您希望从命令按钮操作中显示的结果。
public class myController {
public string Result {get;set;}
public PageReference whatever() {
// do your work here
Result = DateTime.Now();
return null;
}
}
视觉力量
<apex:outputpanel id="sectionX">{!Result}</apex:outputpanel>
每次单击myButton
命令按钮时,输出面板都会显示一个新的日期时间字符串。
事后思考:如果您想将字符串结果/JSON 放入 javascript 方法中,您可以执行以下操作。
<script>
function processJSON(val) {
var res = JSON.parse(val);
// do your work here
}
</script>
<apex:outputpanel id="sectionX">
<script>
processJSON("{!Result}");
</script>
</apex:outputpanel>
在您的示例命令按钮代码中,您使用了重新渲染,因此您不需要返回非空 PageReference。另一方面,如果您想在单击命令按钮时转到另一个页面,则无需设置重新渲染属性,并且需要返回非空 PageReference,即
public PageReference whatever() {
return Page.MyVisualforcePage;
}