我有一个Map键/值,我初始化@PostConstruct如下:
Map<String, String> myMap;
@PostConstruct
public void init() {
myMap=new LinkedHashMap<String, String>();
myMap.put("myKey","myValue");
}
public Map<String, String> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试用<ui:repeat>如下所示的迭代迭代这个Map时,我在Map的getter上设置了一个断点,我注意到它没有被调用,所以没有打印出来:
<ice:panelGroup>
<ui:repeat items="#{myBean.myMap}" var="entry" varStatus="loop">
<input type="checkbox" name="myCheckBoxes" value="#{entry.value}" />
<span class="#{fn:contains(entry.value,'g') ? 'bold-style' : ''}">#{entry.key}</span>
</ui:repeat>
</ice:panelGroup>
Run Code Online (Sandbox Code Playgroud)
但是当替换上面的代码时<c:foreach>,一切正常,并且列表按预期打印,任何想法为什么我会得到这样的行为?
有没有办法动态创建selectItem列表?我真的不想创建大量的bean代码来让我的列表返回List<SelectItem>.
我试过这个:
<ice:selectManyCheckbox>
<ui:repeat var="product" value="#{productListingService.list}">
<f:selectItem itemLabel="#{product.description}" value="#{product.id}"/>
</ui:repeat>
</ice:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有任何想法吗?
我正在努力解决最近出现的outOfMemory PermGen问题.出现错误时保存的其中一个日志片段:
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.findClass(ModuleImpl.java:1872)
at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:720)
at org.apache.felix.framework.ModuleImpl.access$300(ModuleImpl.java:73)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1733)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Run Code Online (Sandbox Code Playgroud)
我增加了最大烫发大小,-XX:MaxPermGen=128m但这只是一个临时解决方案,因为我很确定我们在这里面临一些内存泄漏.我们的应用程序的Web部分部署在jetty(jsf + icefaces)上.单击随机组件会增加使用的内存 - 我正在监视它,jstat -gcold几乎每次命中都会增加3-4kb.我已经添加-XX:+TraceClassLoading到jvm params并且看到很多sun.reflect.GeneratedConstructorAccessor并且sun.reflect.GeneratedMethodAccessor在Web用户界面上有任何操作时被记录.当使用99%的permgen时,我也进行了堆转储.我使用YourKit分析器来分析堆.在类加载器选项卡中,有一些sun.reflect.DelegatingClassLoader行,每个行有1个类.什么可能导致记忆不断增长?任何帮助将非常感激.
提前谢谢,卢卡斯
我在我的Facelet页面上收到以下错误,该页面只包含一个带有两个字段和两个按钮的IceFaces表单:
表单组件需要在其祖先中具有UIForm.建议:在<h:form>中包含必要的组件
这是表格:
<ice:form id="form1" partialSubmit="false">
<ice:panelLayout id="panelLayout3">
<ice:graphicImage id="graphicImage1" url="/resources/images/LoginImage.jpg" width="560" />
<ice:outputLabel for="j_username" id="outputLabel1" value="Username:"/>
<ice:outputLabel for="j_password" id="outputLabel2" value="Password:"/>
<ice:inputText binding="#{login.username}" id="j_username" required="true" />
<ice:inputSecret binding="#{login.password}" id="j_password" required="true" />
<ice:commandButton actionListener="#{login.login}" id="loginBtn" value="Login"/>
<ice:commandButton action="#{login.reset}" id="resetBtn" value="Reset"/>
<ice:outputText id="errorMessage" />
<ice:message errorClass="errorMessage" for="j_username" fatalClass="fatalMessage" id="messages1" infoClass="infoMessage" showSummary="false" warnClass="warnMessage"/>
</ice:panelLayout>
</ice:form>
Run Code Online (Sandbox Code Playgroud)
这是怎么造成的,我该如何解决?
我正在开始一个涉及使用JSF 2.0的新项目.从我最初的阅读开始,该项目的Mojarra和Apache实现涵盖了您将需要的基本组件.
但是我知道用户可以通过面板选项卡,手风琴,滑块等更好的演示来寻求gui ...目前,我还有其他实现,Primefaces,RichFaces和Icefaces.
但我找不到一篇好文章,讨论三者中最好的一篇.
我之前使用过Spring MVC但是我使用JqueryUI来创建这些小部件.既然我是基于组件的框架,我想使用最好的JSF实现.
我想知道诸如性能/互操作性/易用性/支持等指标.
很抱歉,如果我的问题可能含糊不清,但在选择我的JSF供应商实施之前,我想听听意见.
谢谢.
默认情况下,JSF似乎非常"有状态".我需要允许人们使用我们的应用程序,多个选项卡在应用程序的不同部分执行许多操作.
如果没有大量的重新设计,我似乎无法找到合适的指令来实现这一目标.
我们目前没有使用ICEfaces,但我刚在ICEfaces文档中找到了这个:
6.5.7.ICEfaces Portlet和并发DOM视图
ICEfaces提供了一个名为Concurrent DOM Views的功能,它控制ICEfaces框架是否支持来自同一浏览器的单个应用程序的多个视图.在portlet容器中运行时,ICEfaces需要将单个门户网站页面上的单独portlet视为不同的视图,因此几乎总是需要(因此最安全)将此参数设置为true.
例6.19.在WEB-INF/web.xml配置文件中启用ICEfaces并发DOM视图功能,以便将同一门户网站页面上的单独portlet视为不同视图
com.icesoft.faces.concurrentDOMViews是的
所以,我想知道这个神话般的声音功能是否可能适用于我现有的h:表格或者它是否只适用于ICEface组件?
任何人都可以提供任何好的建议,让JSF应用程序在多个选项卡中工作?
我只需要for在JSF/ICEFaces中执行一个非常基本的循环,基本上是渲染列号
类似下面的伪代码
for(int i=0; i<max; i++)
{
<td>#{i}</td>
}
Run Code Online (Sandbox Code Playgroud)
在<c:forEach>超过集合标记迭代,但我不想让我的支持bean更复杂返回整数的一个愚蠢的集合.
你知道更短更智能的方式吗?
谢谢
我需要从JSP JSF页面生成PDF.我在网上搜索过,但是我没有找到任何我应该怎么做的例子.我需要转换整个页面,或者只能转换我在该页面上的图表.
PS我也在使用IceFaces.
我使用ace:fileEntry组件上传文件,成功上传后,我得到的消息是:
'File Entry' uploaded successfully 'filename'.
Run Code Online (Sandbox Code Playgroud)
我想覆盖此消息并显示其他消息(某种解析上传文件的摘要),任何想法如何?
这是我的代码:
<h:form>
<ace:fileEntry id="fileEntryComp"
label="File Entry"
relativePath="uploaded"
fileEntryListener="#{mybean.uploadFile}"/>
<h:commandButton value="Upload Excel File" />
<h:message for="fileEntryComp" />
</h:form>
Run Code Online (Sandbox Code Playgroud) 我的一个支持bean中有一个静态的选择项列表:
private static List<SelectItem> countries = new ArrayList<SelectItem>();
Run Code Online (Sandbox Code Playgroud)
使用以下getter和setter:
public static List<SelectItem> getCountries() {
return countries;
}
public static void setCountries(List<SelectItem> countries) {
LoadSelectItemsBean.countries = countries;
}
Run Code Online (Sandbox Code Playgroud)
我无法通过我的XHTML页面访问静态列表.我试过的代码如下:
<ace:simpleSelectOneMenu id="countryField"
value="#{generalCarrierDataViewBean.carrierBean.countryId}">
<f:selectItems value="#{loadSelectItemsBean.countries}" />
<ace:ajax />
</ace:simpleSelectOneMenu>
Run Code Online (Sandbox Code Playgroud)
问题在于:
<f:selectItems value="#{loadSelectItemsBean.countries}" />
Run Code Online (Sandbox Code Playgroud)
结果的例外是:
javax.el.PropertyNotFoundException: /pages/GeneralCarrierData.xhtml @394,64 value="#{loadSelectItemsBean.states}": Property 'states' not found on type com.oag.reference.util.LoadSelectItemsBean
Run Code Online (Sandbox Code Playgroud)
有人可以建议如何从支持bean正确引用静态属性吗?
谢谢
icefaces ×10
jsf ×9
jsf-2 ×5
java ×4
icefaces-2 ×2
el ×1
jspx ×1
memory-leaks ×1
myfaces ×1
pdf ×1
permgen ×1
primefaces ×1
richfaces ×1