我有一个动态的选项列表字段,其中包含我的组织中的所有顶级类名称。页面上还有一个“显示”按钮。现在,如果用户从此选项列表中选择一个值并单击“显示”按钮,则该类的顶点代码应显示在下方。 请建议我如何在我的VF页面中实现它。
谢谢!
<apex:form >
<apex:selectList value="{!selectedClass}" size="5">
<apex:selectOptions value="{!ClassList}" ></apex:selectOptions>
</apex:selectList>
<apex:pageBlock >
<apex:commandButton action="{!show}" value="Show" id="Button"/>
<apex:pageBlockSection title="My Current Class">
答案 0 :(得分:1)
您可以查询body
对象的ApexClass
字段,查找您要查找的内容:
public class SomeController {
private List<ApexClass> allApexClasses;
public String selectedClass {public get; public set;}
public String apexCodeOutput {public get; private set;}
public SomeController() {
// only select classes that aren't part of a managed package, since you won't be able to view the body
allApexClasses = [select id, name, body from ApexClass where lengthwithoutcomments <> -1 order by name asc];
}
public List<SelectOption> getClassList() {
List<SelectOption> opts = new List<SelectOption> opts;
for ( ApexClass ac : allApexClasses )
opts.add(new SelectOption(ac.Id, ac.Name));
return opts;
}
public PageReference show() {
if ( selectedClass != null ) {
Id classId = (Id) selectedClass;
for ( ApexClass ac : allApexClasses ) {
if ( classId == ac.Id ) {
apexCodeOutput = ac.body;
break;
}
}
}
return null;
}
}
然后在您的VF页面中,单击按钮时重新输入输出代码。您需要在代码周围使用<pre>
标记来保留间距,以便代码可读。
<apex:form>
<apex:selectList value="{!selectedClass}" size="5">
<apex:selectOptions value="{!ClassList}" ></apex:selectOptions>
</apex:selectList>
<apex:pageBlock >
<apex:commandButton action="{!show}" value="Show" rerender="apexoutput" id="Button"/>
<apex:pageBlockSection title="My Current Class">
<apex:outputPanel id="apexoutput">
<pre>{!apexcodeoutput}</pre>
</apex:outputPanel>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>