Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证错误:值是列表选择事件的必需错误 背景_Java_Ajax_Events_Jsf_Richfaces - Fatal编程技术网

Java 验证错误:值是列表选择事件的必需错误 背景

Java 验证错误:值是列表选择事件的必需错误 背景,java,ajax,events,jsf,richfaces,Java,Ajax,Events,Jsf,Richfaces,选择项目列表时,使用Ajax向web服务器触发事件。元素是一个JSFrich:orderingList项 问题 必须接收事件的类: public class BusinessAreaListHandler extends ListHandler<ListElement> { private static final long serialVersionUID = -581048454118449233L; public BusinessAreaListHandler() {

选择项目列表时,使用Ajax向web服务器触发事件。元素是一个JSF
rich:orderingList

问题 必须接收事件的类:

public class BusinessAreaListHandler extends ListHandler<ListElement> {
  private static final long serialVersionUID = -581048454118449233L;

  public BusinessAreaListHandler() { load(); }
  public List<ListElement> getBusinessAreas() { return getList(); }
  public Set<ListElement> getSelection() { return getSet(); }

  public void select() {
    System.out.println( "Clicked Element" );
  }

  protected void load() {
    appendList( new ListElement( "employee" ) );
    appendList( new ListElement( "company" ) );
    appendList( new ListElement( "payroll" ) );
  }
}
列表转换器

public class ListConverter implements Converter {
  @Override
  public Object getAsObject( FacesContext fc, UIComponent ui, String value ) {
    ListElement result = new ListElement( value );
    int index = value.lastIndexOf( ListElement.SEPARATOR );

    System.out.println( "Convert FROM: " + value );

    if( index > 0 ) {
      String id = value.substring( 0, index );
      String v = value.substring( index + 1 );
      result = new ListElement( id, v );
    }

    System.out.println( "Convert TO  : " + result.toString() );

    return result;
  }

  @Override
  public String getAsString( FacesContext fc, UIComponent ui, Object value ) {
    return value.toString();
  }
}
设置列表和事件操作的XHTML片段:

<h:panelGrid columns="2">
  <h:panelGroup>
    <rich:orderingList value="#{businessAreas.list}" var="businessArea" converter="businessAreaConverter" immediate="true" orderControlsVisible="false" fastOrderControlsVisible="false" selection="#{businessAreas.selection}" id="BusinessAreas">
      <f:facet name="caption">
        <h:outputText value="Business Areas" />
      </f:facet>
      <rich:column>
        <h:outputText value="#{businessArea}" />
      </rich:column>
      <a4j:support event="onclick" ignoreDupResponses="true" requestDelay="500" action="#{businessAreas.select}" reRender="ColumnClusters" />
      <a4j:support event="onkeyup" ignoreDupResponses="true" requestDelay="500" action="#{businessAreas.select}" reRender="ColumnClusters" />
    </rich:orderingList>
  </h:panelGroup>
  <h:panelGroup>
    <rich:listShuttle sourceValue="#{columnClusters.list}" targetValue="#{domainContent.list}" var="columnCluster" converter="columnClusterConverter" sourceRequired="false" targetRequired="true" moveControlsVisible="true" orderControlsVisible="false" fastOrderControlsVisible="false" sourceCaptionLabel="Column Clusters" targetCaptionLabel="Domain Content" copyTitle="Move" copyControlLabel="Move" copyAllControlLabel="Move All" copyAllTitle="Move All" id="ColumnClusters">
      <rich:column>
        <h:outputText value="#{columnCluster}" />
      </rich:column>
    </rich:listShuttle>
  </h:panelGroup>
  <h:panelGroup>
    <h:commandButton action="action" value="Create Domain" />
  </h:panelGroup>
</h:panelGrid>
问题: 当用户选择(或取消选择)项目时,需要什么来触发对
BusinessAreaListHandler
select()
的调用

工具书类

谢谢大家!

问题在于此属性:

targetRequired="true"

由于单击会立即触发对服务器的Ajax请求,因此右侧的穿梭机(目标)应该有数据。如果没有数据,将发布验证错误。

谢谢。代码是正确的;我缺少开头和结尾的
表单
元素。然而,现在我得到了臭名昭著的
验证错误:Value是required
错误。它看起来很好。您确实有hashCode()和equals()。对于hashCode()和equals(),我通常让IDE(在我的例子中是Eclipse)生成它们。也许可以尝试一下?触发了
onclick
事件,但是在
select()
代码运行之前,遇到了一个错误。我让Eclipse生成
hashCode()
equals()
方法。同样的错误也会发生。@Dave:如果你给我发了一个WAR文件(带源代码),我会试着运行它。通过
New Element (Hash:Value): 1193469614:employee
New Element (Hash:Value): 950484093:company
New Element (Hash:Value): -786522843:payroll
New Element (Hash:Value): 3373707:name
New Element (Hash:Value): -1147692044:address
New Element (Hash:Value): 114603:tax
New Element (Hash:Value): 1193469614:employee
Convert FROM: employee
Convert TO  : employee
New Element (Hash:Value): 950484093:company
Convert FROM: company
Convert TO  : company
New Element (Hash:Value): -786522843:payroll
Convert FROM: payroll
Convert TO  : payroll
New Element (Hash:Value): 3373707:name
Convert FROM: name
Convert TO  : name
New Element (Hash:Value): -1147692044:address
Convert FROM: address
Convert TO  : address
New Element (Hash:Value): 114603:tax
Convert FROM: tax
Convert TO  : tax
targetRequired="true"