gpt4 book ai didi

xpages - java 函数可以返回预先输入的结果吗

转载 作者:行者123 更新时间:2023-12-02 09:27:54 24 4
gpt4 key购买 nike

这是一个由两部分组成的问题。

我正在使用 Tim Tripcony 的 Fancy XPage Typeahead在许多应用程序中编写脚本,以根据特定数据库中的许多不同 View 返回预先输入列表。

  1. 该博客中列出的服务器端 JavaScript 能否转换为 Java 类,以返回与 XPages 中的 native typeahead 函数可以获取的相同结果。

  2. 该类是否可以成为部署到所有服务器的扩展库的一部分,以便所有应用程序都可以立即使用它,如果可以,如何从 XPage 调用它。

最佳答案

是的,我想不出任何SSJS不能转换为Java的例子,这是Tim Tripcony的SSJS移植到Java。

import java.util.HashMap;
import java.util.Map;
import lotus.domino.*;
import com.ibm.domino.xsp.module.nsf.NotesContext;
public class TypeAhead {
public static String directoryTypeAhead(String searchValue) {
String returnList = "";
try {

Database directory = NotesContext.getCurrent().getCurrentSession().getDatabase("", "names.nsf");
View allUsers = directory.getView("($Users)");
Map<String, HashMap<String, String>> matches = new HashMap<String, HashMap<String, String>>();
Map<String, String> individualMatches = new HashMap<String, String>();
Map<String, Boolean> includeForm = new HashMap<String, Boolean>();
includeForm.put("Person", Boolean.TRUE);
includeForm.put("Group", Boolean.TRUE);
ViewEntryCollection matchingEntries = allUsers.getAllEntriesByKey(searchValue, false);
ViewEntry entry = matchingEntries.getFirstEntry();
int resultCount = 0;
while (entry != null) {
Document matchDoc = entry.getDocument();
String matchType = matchDoc.getItemValueString("Form");
if ((Boolean)includeForm.get(matchType)) {
String fullName = matchDoc.getItemValue("FullName").elementAt(0).toString();
if (matches.get(fullName) == null) {
resultCount++;
Name matchName = NotesContext.getCurrent().getCurrentSession().createName(fullName);
individualMatches = new HashMap<String, String>();
individualMatches.put("cn", matchName.getCommon());
individualMatches.put("photo", matchDoc.getItemValueString("photoUrl"));
individualMatches.put("job", matchDoc.getItemValueString("jobTitle"));
individualMatches.put("email", matchDoc.getItemValueString("internetAddress"));
matches.put(fullName, (HashMap<String, String>) individualMatches);
}
}
if (resultCount > 9) {
entry = null;
}
else {
entry = matchingEntries.getNextEntry(entry);
}
}
returnList = "<ul>";
for (Map<String, String> match : matches.values()) {
String matchDetails = "<li><table><tr><td><img class=\"avatar\" src=\"" + match.get("photo") + "\"/></td><td valign=\"top\"><p><strong>" + match.get("cn") + "</strong></p><p><span class=\"informal\">" + match.get("job") + "<br/>" + match.get("email") + "</span></p></td></tr></table></li>";
returnList += matchDetails;
}
returnList += "</ul>";
} catch(Exception e) {
System.out.println(e);
}
return returnList;
}
}

就在扩展库中创建它而言,要获得我认为您想要的东西,您真正需要做的就是将其放入插件 Jar 中并创建一个功能和更新站点,然后您可以使用新的 8.5.3 功能来将其复制到您的所有服务器。

您可以通过在 xpage 中执行以下操作来使用此代码:

<xp:inputText id="inputText1" value="#{viewScope.someVar}">
<xp:typeAhead mode="partial" minChars="1" valueMarkup="true"
var="searchValue"
valueList="#{javascript:return com.tobysamples.demo.TypeAhead.directoryTypeAhead(searchValue);}">
</xp:typeAhead></xp:inputText>

关于xpages - java 函数可以返回预先输入的结果吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com