我正在使用Java及其框架(Spring 3.1.1)开发Web应用程序.我试图避免尽可能多地使用scriptlet,但是我找不到除此之外的方法来定义数组:
<%
String[] alphabet = {"A", "B", "C", ... , "Z"};
pageContext.setAttribute("alphabet", alphabet);
%>
Run Code Online (Sandbox Code Playgroud)
设置pageContext属性后,我可以使用它${alphabet}.但我想知道,是否可以使用普通的JSTL/EL来创建数组?
更新:我正在使用此数组来创建链接.例如,如果用户单击"S",则会出现名字以"S"开头的员工列表.因此,我不是逐个创建链接而是迭代${alphabet}.
在相同的上下文中,我有另一个查询
<select multiple="multiple" name="prodSKUs">
<c:forEach items="${productSubCategoryList}" var="productSubCategoryList">
<option value="${productSubCategoryList}"${productSubCategoryList == productSubCategoryName ? 'selected' : ''}>${productSubCategoryList}</option>
</c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)
并且请求中的相应设置就像
for(int i=0;i<userProductData.size();i++){
String productSubCategoryName=userProductData.get(i).getProductSubCategory();
System.out.println(productSubCategoryName);
request.setAttribute("productSubCategoryName",productSubCategoryName);
}
Run Code Online (Sandbox Code Playgroud)
这里我有多个选择下拉列表,即使我得到两个的返回值,在UI中只有一个数据突然显示而不是第二个,代码中有什么问题?
我想知道是否有办法将方法的返回值绑定到JSF组件中.我会更好地解释自己.假设我有这样一个类:
public class Document {
private List<Attachment> attachments;
//getter and setter here
}
Run Code Online (Sandbox Code Playgroud)
这个类通过一个名为currentDocument的属性中的注册托管bean暴露给jsf,并以这种方式用于jsf
<h:outputText value="#{myManagedBean.currentDocument.attachment.size}" />
Run Code Online (Sandbox Code Playgroud)
我知道,这是不正确的.但是这样做的正确方法是什么?我应该在Document类上创建一个属性,让我们说numberOfAttachments,并绑定到那个,或者有一种方法直接绑定方法的返回值?
我试图有条件地使用建立自定义列表<ui:repeat>.在每次出现-1作为列表中的项目值时,我需要添加换行符.
我尝试在<c:if>里面<ui:repeat>使用它,但它似乎不起作用.它总是评估false.
<ul>
<ui:repeat value="#{topics.list}" var="topicId" >
<li>#{topicId}</li>
<c:if test="#{topicId eq -1}"> <br/> </c:if>
</ui:repeat>
</ul>
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我需要for在JSTL/EL中表示以下循环(在Java上下文中).
for (int i = 6; i <= 15; i++) {
System.out.print(i+"\t");
}
Run Code Online (Sandbox Code Playgroud)
它将显示以下输出.
6 7 8 9 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)
我怎样才能在JSTL/EL中做同样的事情?我对它没有确切的想法.我只想尝试以下方法.
<c:forEach begin="6" end="15" varStatus="loop">
<c:out value="${loop.count}"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
它显然会显示以下输出.
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.我需要在6和15之间显示数字(即在指定范围之间).我需要在Web应用程序中使用这样的概念来实现分页.我可以用EL吗?
\t在这个声明System.out.print(i+"\t");中并不重要.
我在Tomcat上有一个JSF 2.0应用程序,有很多<h:inputText>字段可以在我的数据库中输入数据.某些字段不是必需的.
<h:inputText value="#{registerBean.user.phoneNumber}" id="phoneNumber">
<f:validateLength maximum="20" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
当用户将此字段留空时,JSF设置空字符串""而不是null.
如何在不检查每个String的情况下修复此行为
if (string.equals("")) { string = null; }
Run Code Online (Sandbox Code Playgroud) 我有一个资源包,其中包含以下条目:
entry1=value1
entry2=value2
entry3=value3
Run Code Online (Sandbox Code Playgroud)
在我的JSF页面中,我试图动态地使用这些键.条目的ID来自托管bean.我认为它应该是这样的:
<h:outputText value="#{msg['entry' managedBean.entryIndex]}"/>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
jsf resourcebundle el string-concatenation internationalization
阅读问答后如何避免JSP文件中的Java代码?我停止使用scriptlet进行编码.
但我没有得到它们之间的确切关系.
在这里,我从这里得到了代码
<c:set var="test" value="JSTL Core Tags"></c:set>
<c:out value="${test}"></c:out>
Run Code Online (Sandbox Code Playgroud)
我知道<c:set是一个JSP标签,${test}是表达式语言..
我的困惑是
不会JSTL单独工作吗?它总是需要支持EL吗?如果不总是需要,在上述情况下如何?
如何在没有JSTL标签的情况下简单地使用Expression语言?
我正在尝试将现有代码迁移到使用Enum,由于我缺乏Enum的经验,我遇到了一些问题.首先,这是我的结构.在我的EJB实体中,我有一个枚举类(不确定它是否甚至是一个类).
public enum Type {
PROFILE_COMMENT,
GROUP_COMMENT
}
Run Code Online (Sandbox Code Playgroud)
在我的托管bean myBean.java,我有
@ManagedBean(name="myBean")
@SessionScoped
public class myBean {
private Type type;
public myBean() {
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
public void Test(Type t){
System.out.println(t);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的JSF,
<h:commandButton value="Test" action="#{myBean.Test(myBean.type.PROFILE_COMMENT)}" />
Run Code Online (Sandbox Code Playgroud)
我java.lang.ClassNotFoundException:说Type的不是课
我Type在EJB中的原因是我可以为我的Entity创建一个枚举类型,所以我的查询看起来像这样
select c from X c where c.type = Type.PROFILE_COMMENT
Run Code Online (Sandbox Code Playgroud) 有没有办法以声明方式检查枚举是否具有指定值.例如:
<h:graphicImage name="error.png" library="images"
rendered="#{viewController.current.status == Status.ERROR}" />
Run Code Online (Sandbox Code Playgroud)
在托管beand中定义一个方法来检查每个枚举值,例如,有点单调乏味
public boolean isStateIsError() {
return current.getStatus() == Status.ERROR;
}
Run Code Online (Sandbox Code Playgroud)
这样做有更短/更好的方法吗?