标签: el

使用JSTL或EL创建数组

我正在使用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}.

arrays jsp jstl el scriptlet

22
推荐指数
3
解决办法
9万
查看次数

使用JSTL设置HTML下拉选择选项

在相同的上下文中,我有另一个查询

<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中只有一个数据突然显示而不是第二个,代码中有什么问题?

html java jsp jstl el

21
推荐指数
2
解决办法
12万
查看次数

如何在JSF EL中显示List#size()的值?

我想知道是否有办法将方法的返回值绑定到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,并绑定到那个,或者有一种方法直接绑定方法的返回值?

jsf binding el jsf-2

21
推荐指数
1
解决办法
2万
查看次数

在<ui:repeat>中指定元素的条件渲染?<c:if>似乎不起作用

我试图有条件地使用建立自定义列表<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)

这可能吗?

jsf jstl el jsf-2 uirepeat

21
推荐指数
1
解决办法
2万
查看次数

在JSTL/EL中表示一个简单的for循环

我需要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)

这不是我想要的.我需要在615之间显示数字(即在指定范围之间).我需要在Web应用程序中使用这样的概念来实现分页.我可以用EL吗?


\t在这个声明System.out.print(i+"\t");中并不重要.

jsp for-loop jstl el

21
推荐指数
1
解决办法
3万
查看次数

h:绑定到String属性的inputText是提交空字符串而不是null

我在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)

string null jsf tomcat el

20
推荐指数
1
解决办法
3万
查看次数

EL中用于动态ResourceBundle键的字符串连接

我有一个资源包,其中包含以下条目:

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

20
推荐指数
2
解决办法
1万
查看次数

JSTL与表达语言之间的确切差异和关系

阅读问答后如何避免JSP文件中的Java代码?我停止使用scriptlet进行编码.

所以开始阅读JSTL,并怀疑我发现JSTL与EL有关系 .

但我没有得到它们之间的确切关系.

在这里,我从这里得到了代码

 <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}是表达式语言..

我的困惑是

  1. 不会JSTL单独工作吗?它总是需要支持EL吗?如果不总是需要,在上述情况下如何?

  2. 如何在没有JSTL标签的情况下简单地使用Expression语言?

java jsp jstl el java-ee

20
推荐指数
1
解决办法
1万
查看次数

将Enum值作为参数从JSF传递

我正在尝试将现有代码迁移到使用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)

java jsf enums el

19
推荐指数
1
解决办法
2万
查看次数

JSF 2:在呈现的属性中使用枚举

有没有办法以声明方式检查枚举是否具有指定值.例如:

<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)

这样做有更短/更好的方法吗?

jsf enums el jsf-2

19
推荐指数
2
解决办法
2万
查看次数