programing

selectOneMenu ajax 이벤트

newstyles 2023. 3. 25. 10:57

selectOneMenu ajax 이벤트

편집 가능한 prime faces select One Menu를 사용하여 값을 표시하고 있습니다.사용자가 목록에서 항목을 선택한 경우 텍스트 영역을 업데이트해야 합니다.단, 사용자가 selectOneMenu에 입력했을 경우 텍스트영역은 갱신되지 않습니다.

에이잭스 이벤트 안 하고도 해결할 수 있을 것 같아서하지만 여기서 어떤 이벤트를 이용할 수 있는지 모르겠어요.저는 그밖에 몰라요.valueChange다른 이벤트도 있나요?onSelect또는onKeyUp?

코드는 다음과 같습니다.

<p:selectOneMenu id="betreff" style="width: 470px !important;"  
            editable="true" value="#{post.aktNachricht.subject}">
            <p:ajax event="valueChange" update="msgtext"
                listener="#{post.subjectSelectionChanged}" />
            <f:selectItems value="#{post.subjectList}" />
</p:selectOneMenu>

<p:inputTextarea style="width:550px;" rows="15" id="msgtext"
        value="#{post.aktNachricht.text}" />

PrimeFaces ajax 이벤트는 문서화가 잘 되지 않을 수 있으므로 대부분의 경우 소스 코드로 이동하여 직접 확인해야 합니다.

p:selectOneMenu는 변경 이벤트를 지원합니다.

<p:selectOneMenu ..>
    <p:ajax event="change" update="msgtext"
        listener="#{post.subjectSelectionChanged}" />
    <!--...-->
</p:selectOneMenu>

듣는 사람을 자극하다AjaxBehaviorEventsignature의 인수:

public void subjectSelectionChanged(final AjaxBehaviorEvent event)  {...}

좀 더 편리한 것을 사용하고 싶습니다.itemSelect이벤트. 이 이벤트를 통해org.primefaces.event.SelectEvent오브젝트를 표시합니다.

<p:selectOneMenu ...>
    <p:ajax event="itemSelect" 
        update="messages"
        listener="#{beanMB.onItemSelectedListener}"/>
</p:selectOneMenu>

이러한 청취자의 경우:

public void onItemSelectedListener(SelectEvent event){
    MyItem selectedItem = (MyItem) event.getObject();
    //do something with selected value
}

selectOneMenu 구성 요소를 실행하기 전에 페이지에 "필수" 특성이 "true"인 빈 구성 요소가 포함되지 않도록 주의하십시오.
다음과 같은 구성 요소를 사용하는 경우

<p:inputText label="Nm:" id="id_name" value="#{ myHelper.name}" required="true"/>

그리고나서,

<p:selectOneMenu .....></p:selectOneMenu>

필요한 컴포넌트를 채우지 않으면 selectoneMenu의 ajax 리스너를 실행할 수 없습니다.

이 값을 체크할 수 있습니다.selectOneMenu구성 요소가 대상 목록에 속합니다.

즉,

public void subjectSelectionChanged() {
    // Cancel if subject is manually written
    if (!subjectList.contains(aktNachricht.subject)) { return; }
    // Write your code here in case the user selected (or wrote) an item of the list
    // ....
}

짐작건대subjectList수집 타입입니다.ArrayList물론 여기서 코드는 사용자가 자신의 아이템을 쓸 때 실행됩니다.selectOneMenu목록.

언급URL : https://stackoverflow.com/questions/16587585/selectonemenu-ajax-events