相关疑难解决方法(0)

在List <String>上使用<ui:repeat> <h:inputText>不会更新模型值

这是场景(简化):

有一个bean(称之为mrBean)与成员和适当的getter/setter:

private List<String> rootContext;

public void addContextItem() {
    rootContext.add("");
}
Run Code Online (Sandbox Code Playgroud)

JSF代码:

<h:form id="a_form">
            <ui:repeat value="#{mrBean.stringList}" var="stringItem">
                    <h:inputText value="#{stringItem}" />
            </ui:repeat>
            <h:commandButton value="Add" action="#{mrBean.addContextItem}">
                <f:ajax render="@form" execute="@form"></f:ajax>
            </h:commandButton>
</h:form>
Run Code Online (Sandbox Code Playgroud)

问题是,当单击"添加"按钮时,不会执行<h:inputText/>在表示字符串中的值中输入的值stringList.

实际上,从不调用mrBean.stringListsetter(setStringList(List<String> stringList)).

知道为什么吗?

一些信息 - 我在Tomcat 6上使用MyFaces JSF 2.0.

string jsf list jsf-2 uirepeat

9
推荐指数
1
解决办法
8746
查看次数

不处理ui:repeat中h:inputText的值

我想处理这个表单(valueChangueListener在实际情况下无效).

这是后豆:

public class TestBean extends PrivateBaseBean implements Serializable {
private List<String> strings;

@PostConstruct
public void init() {
    strings = new ArrayList<String>();
    strings.add("");
    strings.add("");
    strings.add("");
}

public void saveAction(ActionEvent event) {

    StringBuilder textToShowInMessage = new StringBuilder();
    for (String string : strings) {
        textToShowInMessage.append(string);
        textToShowInMessage.append("; ");
    }
    FacesMessage msg = new FacesMessage(super.getBundle().getString(
            textToShowInMessage.toString()), "");

    FacesContext.getCurrentInstance().addMessage(null, msg);
}

getters... setters...
Run Code Online (Sandbox Code Playgroud)

一个观点:

....
<h:form>
<ui:repeat var="string" value="#{testBean.strings}">
    <h:inputText value="#{string}" />
    <br />
</ui:repeat>
<p:commandButton value="#{msg.save}"
actionListener="#{testBean.saveAction}" icon="ui-icon-disk"
        update="@form" />
</h:form>
...
Run Code Online (Sandbox Code Playgroud)

在后面的bean字符串列表中处理表单时,始终为空.

如何处理表单intput的内部迭代,没有任何值的changue监听器? …

jsf primefaces

8
推荐指数
1
解决办法
9450
查看次数

JSF - 使用EL从ArrayList <String []>浏览和打印值

我有一个来自Bean的ArrayList:

...
public ArrayList<String[]> getArticleList() {
    ...
}
...
Run Code Online (Sandbox Code Playgroud)

我需要在JSF2上使用EL来打印这些值(使用getter方法)(例如 #{bean.articlesLage}

我怎样才能做到这一点?干杯

jsf facelets el jsf-2

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

如何使用h:inputText + managed bean在JSF中保存列表/ map/set

我想要实现的内容与以下链接中发布的内容非常相似.

如何使用ui重复+ h:inputText +托管bean在JSF中保存数组?

我对Arjan Tijms在上面的链接中提供的答案特别着迷,但我想要达到的目标略有不同.请考虑以下代码段.

豆子

import javax.annotation.PostConstruct;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;

@RequestScoped
@Named
public class MyBean {

    List<String> choices;

    public List<String> getChoices() {
        return choices;
    }

    @PostConstruct
    public void initChoices() {
        choices= new ArrayList<String>();
    }

    public String save() {
        // should save all the choices into some repository
        return "";
    }
}
Run Code Online (Sandbox Code Playgroud)

和facelet页面

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"        
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:body>

        <h:form>
            <ui:repeat value="#{myBean.choices}" varStatus="status">            
                <h:inputText value="#{myBean.choices[status.index]}" />
            </ui:repeat>
            <h:commandButton value="Save" action="#{myBean.save}" />
        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是,如果我们在开头的列表中有一些初始数据,这将有效.初始列表为空的情况怎么样?

我正在寻找的理想解决方案是每个选项都有1小时:inputText,当点击保存按钮时,每个h:inputText中的所有选项都会被添加到选项列表中.我搜索过高低,但似乎无法找到关于如何做到这一点的任何提示.

如果JSF 2真的不支持这个,我想我只需要用一个h:inputText来使用丑陋的方式并使用转换器来转换成列表,但我仍然希望理想的解决方案可以是找到.

希望来自stackoverflow的人可以为我指明正确的方向.

jsf-2

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

标签 统计

jsf ×3

jsf-2 ×3

el ×1

facelets ×1

list ×1

primefaces ×1

string ×1

uirepeat ×1