2016-05-01 4 views
0

Я использую тег для отображения полей пользовательского объекта контроллера на странице VF. После выбора значения из списка выбора (который реализуется с помощью), я поместил тэг для возврата пользовательского объекта из БД в контроллер. Теперь я хочу показать поля этого объекта RETREIVED в VF-странице при изменении значения выбора. Эти значения не отображаются. Я знаю, что это очень просто, пожалуйста, помогите мне в очищении любой глупой ошибки!Поля объекта Custon от контроллера не отображаются с использованием вершины: выходное поле в VF-странице

VF Страница:

<apex:form> 
     <apex:pageblock > 
      <apex:pageBlocksection title="Attribute Details"> 
       <apex:tabpanel switchtype="client"> 
        <apex:tab label="Script 1" id="s1" labelWidth="90px"> 
         <h1> 
          Choose Script: 
         </h1> 
         <apex:selectlist value="{!selectedValue}" size="1" id="selectID"> 
          <apex:selectOptions value="{!scriptoptions}" /> 
         </apex:selectlist> 
         <br/> 
         <apex:outputPanel id="thisPanel"> 
          <apex:actionSupport event="onchange" action="{!setValues}" rerender="thisPanel" /> 
          <apex:actionStatus startText="fetching related values..." 
               stopText="" id="actionStatus"/> 
          <outputfield label="Executioner" value="{!valueResult.Executioner_Emp_ID__c}"/> 
          <br/> 
          <outputfield label="Planner" value="{!valueResult.Planner_Emp_ID__c}"/> 
          <br/> 
          <outputfield label="Reviewer" value="{!valueResult.Reviewer_Emp_ID__c}"/> 
         </apex:outputPanel> 
        </apex:tab>..... 

Контроллер:

public class ScriptAttributesController 
{ 

    public String setValues { get; set; } 
    public List<Test_script__c> scriptListWithValues = [select name, id, Executioner__c, Planner__c, Reviewer__c from Test_Script__c]; 
    public static Test_Script__c valueResult {get;set;} 
    public String selectedValue {get;set;} 

    //public Test_Script__c returnedTestScript {get;set;} 

    public void ScriptAttributesController() 
    { 
    } 

    public List<SelectOption> getScriptoptions() 
    { 
     List<SelectOption> options = new List<SelectOption>(); 
     options.add(new SelectOption('select a value','select a value')); 
     for(Test_Script__c s: scriptListWithValues) 
     { 
      options.add(new SelectOption(s.id,s.name)); 
     } 
     return options; 
    } 

     public void setValues() 
    { 
     system.debug('ValueResult: '+valueResult); 
     system.debug('selectedValue: '+selectedValue); 
     valueResult=[select name, id, Executioner_Emp_ID__c, Planner_Emp_ID__c, Reviewer_Emp_ID__c, Iteration__c from Test_Script__c where id=:selectedValue limit 1]; 
     system.debug('ValueResult: '+valueResult); 
    } 

ответ

0

Есть две ошибки:

  1. Первый является то, что apex: actionSupport тег должен быть внутри apex: selectlist. А также, если вы хотите отобразить текущий статус действия, вы должны использовать статус атрибут в apex: actionSupport.

  2. Другой является то, что вы должны использовать апекс: outputfield вместо простого outputfield.

Вот фиксированный код:

<apex:form> 
     <apex:pageblock > 
      <apex:pageBlocksection title="Attribute Details"> 
       <apex:tabpanel switchtype="client"> 
        <apex:tab label="Script 1" id="s1" labelWidth="90px"> 
         <h1> 
          Choose Script: 
         </h1> 
         <apex:selectlist value="{!selectedValue}" size="1" id="selectID"> 
          <apex:selectOptions value="{!scriptoptions}" /> 
          <apex:actionSupport event="onchange" action="{!setValues}" rerender="thisPanel" status="actionStatus"/> 
         </apex:selectlist> 
         <br/> 
         <apex:outputPanel id="thisPanel"> 
          <apex:actionStatus startText="fetching related values..." 
               stopText="" id="actionStatus"/> 
          <apex:outputfield label="Executioner" value="{!valueResult.Executioner_Emp_ID__c}"/> 
          <br/> 
          <apex:outputfield label="Planner" value="{!valueResult.Planner_Emp_ID__c}"/> 
          <br/> 
          <apex:outputfield label="Reviewer" value="{!valueResult.Reviewer_Emp_ID__c}"/> 
         </apex:outputPanel> 
        </apex:tab>.....