Xpages - код SSJS с помощью пользовательского свойства элемента управления - PullRequest
0 голосов
/ 12 сентября 2018

Можно ли определить некоторые SSJS через определение свойства в пользовательском элементе управления?

Например, для тестирования у меня есть определение свойства в пользовательском элементе управления с именем onClickCode. В указанном пользовательском элементе управления есть радио-кнопка, и в событии onClick / onChange я пытаюсь написать ComboData.onClickCode. Кажется, это выполняется при загрузке страницы, а не при событии onClick.

Код, который передается в определениях свойств:

<xc:ccQuestionInterimRadiosYesNo required="true"
                        dataSource="#{document1}" fieldName="Q1"
                        helpText="Please select an answer"
                        placeholder="Enter any further details here..."
                        questionHeader="primary" questionTextNJD="QuestionTextNJD">
                        <xc:this.radioOptions><![CDATA[#{javascript:return ['Yes', 'No'];}]]></xc:this.radioOptions>
                        <xc:this.questionText><![CDATA[${javascript:"Ready for section 2?"}]]></xc:this.questionText>
                        <xc:this.onClickCode><![CDATA[#{javascript:'print("Hello")'}]]></xc:this.onClickCode>
                    </xc:ccQuestionInterimRadiosYesNo>

Код переключателя внутри указанного пользовательского элемента управления:

<!-- RADIO BUTTON GROUP -->
                        <xp:radioGroup
                            loaded="${!empty compositeData.placeholder}"
                            value="#{compositeData.dataSource[compositeData.fieldName]}"
                            required="${compositeData.required}" layout="lineDirection">

                            <xp:this.validators>
                                <xp:validateRequired
                                    message="#{javascript:compositeData.helpText}">
                                </xp:validateRequired>
                            </xp:this.validators>

                            <xp:this.id><![CDATA[${javascript:"radioGroup"+compositeData.fieldName}]]></xp:this.id>
                            <xp:selectItems>
                                <xp:this.value><![CDATA[#{javascript:compositeData.radioOptions}]]></xp:this.value>
                            </xp:selectItems>
                            <xp:eventHandler event="onchange"
                                submit="true" refreshMode="complete">
                                <xp:this.action><![CDATA[#{javascript:compositeData.onClickCode}]]></xp:this.action>
                            </xp:eventHandler></xp:radioGroup>

UPDATE:

Пользовательский контроль на странице проходит:

onClickCode="#{javascript:test1}"

Код события onChange переключателя в пользовательском элементе управления:

if (compositeData.onClickCode) {
    compositeData.onClickCode.call();
}

Скрипт, содержащий код, является частью моей темы:

<script src="/StdServerScripts.jss" clientSide="false"></script>

Код в указанном скрипте:

function test1() {
    print("Hello");
}
...