直接从我的Java代码中的特立尼达UIXComponent获取JSPX用户输入



我想从Java代码中的组件检索用户输入。类似于文本框。文本在aspx/. net。我发现文档非常混乱,我的尝试不编译。有办法吗?

    <tr:inputDate id="date" required="true"
          inlineStyle="color:rgb(0,58,117); font-weight:bold;"
          value="#{processScope.benefit.serviceDate}"
          immediate="false"
          onchange="submit();"
          label="#{mb_ResourceBean.res['claim.serviceDate.label']}">
          <tr:convertDateTime pattern="yyyy/MM/dd" secondaryPattern="yyyyMMdd"
                type="date"/>
    <tr:validateDateTimeRange minimum="#{bk_ClaimBean.minDate}"
                        maximum="#{bk_ClaimBean.maxDate}"/>
    </tr:inputDate>

错误的半尝试获取输入:

     UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
     UIXComponent component = viewRoot.findComponent("date"); //does not compile

我不确定你想要实现什么,但是因为你已经有了一个值绑定(#{processScope.benefit.serviceDate}),并且你在<tr:inputDate>中有onchange="submit();",看起来你想要使用valueChangeListener

需要一个方法来处理bean中的值更改事件,例如:

public void dateChanged(ValueChangeEvent event)
{
  System.out.println("New value: "+ event.getNewValue());
  System.out.println("instanceof Date: "+ (event.getNewValue() instanceof Date));
}

在您的jspx中,您必须添加侦听器。此外,您可能希望使用autoSubmit="true"而不是onchange="submit();",例如:

<tr:inputDate value="#{myBean.myDate}"
              valueChangeListener="#{myBean.dateChanged}"
              immediate="true" autoSubmit="true"/>

您的问题中的代码不编译,因为viewRoot.findComponent()将返回UIComponent。您需要将其强制转换为UIXComponent

还需要考虑命名容器。您将需要使用类似:viewRoot.findComponent("formId:date");的东西。在本例中,formId<tr:form>的id。

相关内容

  • 没有找到相关文章

最新更新