0

保存されたデータに応じてチェックボックスを作成する apex:dynamicComponent を作成しました。

チェックボックスの作成は次のとおりです。

Component.Apex.inputCheckbox chkBox = new Component.Apex.inputCheckbox();
if (myMap.get(myList[i]) == true) 
    chkBox.selected = true;

しかし、VF ページを表示しようとすると、次のように表示されます。

System.VisualforceException: Invalid value for property selected: java.lang.String cannot be cast to java.lang.Boolean 

"chkBox.selected" を別の値 (文字列 'true' など) に設定しようとしましたが、コントローラーを保存できません。

ご協力いただきありがとうございます。

4

1 に答える 1

0

上記のように apex コンポーネントを作成する代わりに、以下のようにチェックボックス コンポーネントを作成してみませんか?

public Boolean chkBox{
    get{
        if(myMap.get(myList[i]) == true){
            return true;
        } 
            return false;            
    }
    set;

Visualforce ページでは、以下のように記述できます。

<apex:outputLabel value="Check Box Label"/>    <apex:inputCheckBox value="{!chkBox}"><apex:actionSupport event="onclick" rerender="TheBlock" status="showCredentialing" />

VF エラーには行番号がないため、視覚力ページにある他の出力フィールド ERROR がエラーの原因である可能性もあります。

visualforce ページに独立した Component.Apex.inputCheckbox を実装しようとしました。以下のコードを試してください

コントローラ

            public class testcontroller {
        public Component.Apex.inputCheckbox chkBox { get; set; }
        public Component.Apex.inputCheckbox dyCheckbox; 
        public PageReference chkBox3() {
           this.chkBox = new Component.Apex.inputCheckbox();
           System.debug('Here is Test');
           this.chkBox.value = true;     
           return null; 
           }
        public String chkBox2 { get; set; }
        public testcontroller(){
           this.chkBox2 = 'false';
        }
        public Component.Apex.inputCheckbox getInputCheckbox() {
           Component.Apex.inputCheckbox dyCheckbox = new Component.Apex.inputCheckbox();
           dyCheckbox.value = 'true';
           return dyCheckbox;
           }
        }

ビジュアルフォースページ

<apex:page controller="testcontroller">
  <!-- Begin Default Content REMOVE THIS -->
  <h1>Congratulations</h1>
  This is your new Page: test 
  <apex:form >
    <apex:outputLabel value="Check Box Label"/>   
     <apex:inputCheckBox value="{!chkBox2}"/>

              <apex:dynamicComponent componentValue="{!InputCheckbox}" />


     <apex:commandButton value="sd" action="{!chkBox3}" title="asdf"/> 
  </apex:form>

  <!-- End Default Content REMOVE THIS -->
</apex:page>
于 2012-09-25T10:32:15.733 に答える