Public 字符串不是从 select 元素设置的,而是从输入框设置的
Public string not setting from select element, but sets from input box
我觉得我的脑袋要爆炸了。请帮忙。
我有一个 select 元素,其中包含从类别列表标准组件加载的选项。它的值是 Group:{!groupCategory} 指的是我自定义控制器上的 public 字符串。
我有一个 apex:inputText 组件,其值为 {!searchString} 指的是我自定义控制器上的 public 字符串。
我有一个 apex:commandButton 组件,它重新呈现一个面板组,该面板组从 knowledge:articlelist 组件编写我的文章。
我的问题是 {!groupCategory} 没有从我的 select 元素(假设)接收 selected 选项值,但是当我使用 javascript 记录 select 元素值它 returns 被 selected 的选项的值。
奇怪的是 {!searchString} 值由 knowledge:articlelist 组件设置和读取。
注意:为了简单起见,我从控制器中删除了 currentPagenumber 计算,我看不出它与手头的问题有什么关系。另外,我使用的是标准 HTML select 元素而不是顶点 selectlist 组件,因为 knowledge:categorylist 不能嵌套在 selectList. 中
关键字搜索控制器:
public with sharing class KeywordSearchController {
//Page Size
private Static Final Integer PAGE_NUMBER = 5;
//Search String used in ArticleList tag
public String groupCategory { get; set; }
public String searchstring { get; set; }
public KeywordSearchController() {
String qryString = 'SELECT Id, title, UrlName,
LastPublishedDate,LastModifiedById FROM KnowledgeArticleVersion WHERE
(PublishStatus = \'online\' and Language = \'en_US\')';
List<KnowledgeArticleVersion> articleList= Database.query(qryString);
maxSize = articleList.size() ;
}
Visualforce 页面:
<apex:page showHeader="false" standardStyleSheets="false" controller="KeywordSearchController">
<apex:form>
<select id="groupSelect" value="{!groupCategory}">
<knowledge:categoryList categoryVar="category" categoryGroup="Group" rootCategory="All" level="-1">
<option value="Group:{!category.name}">{!category.label}</option>
</knowledge:categoryList>
</select>
<div class="field is-grouped">
<p class="control is-expanded has-icons-left">
<apex:inputText styleClass="input is-medium" value="{!searchstring}" />
<span class="icon is-left">
<i class="fa fa-search"></i>
</span>
</p>
<p class="control">
<apex:commandButton value="Search" id="submitButton" styleClass="button is-primary is-medium" reRender="theSearchResults"/>
</p>
</div>
</apex:form>
<apex:form >
<apex:messages />
<apex:pageBlock title="">
<apex:panelGroup id="theSearchResults" >
<apex:panelGrid width="100%">
<table class="table is-striped is-narrow">
<thead>
<tr>
<th>Title</th>
<th>Article Type</th>
<th>Summary</th>
</tr>
</thead>
<knowledge:articleList articleVar="article" categories="{!groupCategory}"
pageNumber="{!currentPageNumber}" Keyword="{!searchstring}"
hasMoreVar="false" pageSize="5">
<tbody>
<tr>
<td>
<apex:outputLink target="" value="{!URLFOR($Action.KnowledgeArticle.View, article.id,['popup' = 'false'])}">{!article.title}</apex:outputLink>
</td>
<td><apex:outputText >{!article.articleTypeLabel}</apex:outputText></td>
<td><apex:outputText >{!article.abstract}</apex:outputText></td>
</tr>
</tbody>
</knowledge:articleList>
</table>
</apex:panelGrid>
</apex:panelGroup>
</apex:pageBlock>
</apex:form>
您应该使用标签而不是标准的 html 标签。标准 html 标签没有内置的集合绑定,只有一个。
我觉得我的脑袋要爆炸了。请帮忙。
我有一个 select 元素,其中包含从类别列表标准组件加载的选项。它的值是 Group:{!groupCategory} 指的是我自定义控制器上的 public 字符串。
我有一个 apex:inputText 组件,其值为 {!searchString} 指的是我自定义控制器上的 public 字符串。
我有一个 apex:commandButton 组件,它重新呈现一个面板组,该面板组从 knowledge:articlelist 组件编写我的文章。
我的问题是 {!groupCategory} 没有从我的 select 元素(假设)接收 selected 选项值,但是当我使用 javascript 记录 select 元素值它 returns 被 selected 的选项的值。
奇怪的是 {!searchString} 值由 knowledge:articlelist 组件设置和读取。
注意:为了简单起见,我从控制器中删除了 currentPagenumber 计算,我看不出它与手头的问题有什么关系。另外,我使用的是标准 HTML select 元素而不是顶点 selectlist 组件,因为 knowledge:categorylist 不能嵌套在 selectList. 中
关键字搜索控制器:
public with sharing class KeywordSearchController {
//Page Size
private Static Final Integer PAGE_NUMBER = 5;
//Search String used in ArticleList tag
public String groupCategory { get; set; }
public String searchstring { get; set; }
public KeywordSearchController() {
String qryString = 'SELECT Id, title, UrlName,
LastPublishedDate,LastModifiedById FROM KnowledgeArticleVersion WHERE
(PublishStatus = \'online\' and Language = \'en_US\')';
List<KnowledgeArticleVersion> articleList= Database.query(qryString);
maxSize = articleList.size() ;
}
Visualforce 页面:
<apex:page showHeader="false" standardStyleSheets="false" controller="KeywordSearchController">
<apex:form>
<select id="groupSelect" value="{!groupCategory}">
<knowledge:categoryList categoryVar="category" categoryGroup="Group" rootCategory="All" level="-1">
<option value="Group:{!category.name}">{!category.label}</option>
</knowledge:categoryList>
</select>
<div class="field is-grouped">
<p class="control is-expanded has-icons-left">
<apex:inputText styleClass="input is-medium" value="{!searchstring}" />
<span class="icon is-left">
<i class="fa fa-search"></i>
</span>
</p>
<p class="control">
<apex:commandButton value="Search" id="submitButton" styleClass="button is-primary is-medium" reRender="theSearchResults"/>
</p>
</div>
</apex:form>
<apex:form >
<apex:messages />
<apex:pageBlock title="">
<apex:panelGroup id="theSearchResults" >
<apex:panelGrid width="100%">
<table class="table is-striped is-narrow">
<thead>
<tr>
<th>Title</th>
<th>Article Type</th>
<th>Summary</th>
</tr>
</thead>
<knowledge:articleList articleVar="article" categories="{!groupCategory}"
pageNumber="{!currentPageNumber}" Keyword="{!searchstring}"
hasMoreVar="false" pageSize="5">
<tbody>
<tr>
<td>
<apex:outputLink target="" value="{!URLFOR($Action.KnowledgeArticle.View, article.id,['popup' = 'false'])}">{!article.title}</apex:outputLink>
</td>
<td><apex:outputText >{!article.articleTypeLabel}</apex:outputText></td>
<td><apex:outputText >{!article.abstract}</apex:outputText></td>
</tr>
</tbody>
</knowledge:articleList>
</table>
</apex:panelGrid>
</apex:panelGroup>
</apex:pageBlock>
</apex:form>
您应该使用标签而不是标准的 html 标签。标准 html 标签没有内置的集合绑定,只有一个。