Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2:outputLink,其参数取决于用户输入_Jsf_Jsf 2_Java Ee 6 - Fatal编程技术网

JSF2:outputLink,其参数取决于用户输入

JSF2:outputLink,其参数取决于用户输入,jsf,jsf-2,java-ee-6,Jsf,Jsf 2,Java Ee 6,我的问题是:我需要为报表创建一个(看似)简单的前端。用户输入一组数字,以空格或逗号分隔,这些数字是将在报告中显示的ID 我使用转换器将其从字符串更改为列表,然后再从列表更改为数字以逗号分隔的形式: @FacesConverter(value="multiProdConverter") public class MultiProdConverter implements Converter { @Override public Object getAsObject(FacesCo

我的问题是:我需要为报表创建一个(看似)简单的前端。用户输入一组数字,以空格或逗号分隔,这些数字是将在报告中显示的ID

我使用转换器将其从字符串更改为列表,然后再从列表更改为数字以逗号分隔的形式:

@FacesConverter(value="multiProdConverter")
public class MultiProdConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        StringTokenizer splitter = new StringTokenizer(value, " \t\n\r\f,");

        List<Integer> ret = new ArrayList<Integer>();
        while (splitter.hasMoreTokens()) {
            String token = splitter.nextToken();
            ret.add(Integer.parseInt(token));
        }

        return ret;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        return implode((List<Integer>)value);
    }

    private String implode(List<Integer> sdaList) {
        StringBuilder sb = new StringBuilder();
        if (!sdaList.isEmpty()) {
            sb.append(sdaList.get(0));
            for (int i = 1; i < sdaList.size(); i++) {
                sb.append(",");
                sb.append(sdaList.get(i));
            }
        }
        return sb.toString();
    }
}
@facescoverter(value=“multiProdConverter”)
公共类MultiProdConverter实现转换器{
@凌驾
公共对象getAsObject(FacesContext上下文、UIComponent组件、字符串值){
StringTokenizer拆分器=新的StringTokenizer(值“\t\n\r\f”);
List ret=new ArrayList();
while(splitter.hasMoreTokens()){
字符串标记=splitter.nextToken();
ret.add(Integer.parseInt(token));
}
返回ret;
}
@凌驾
公共字符串getAsString(FacesContext上下文、UIComponent、对象值){
返回内爆((列表)值);
}
私有字符串内爆(列表sdaList){
StringBuilder sb=新的StringBuilder();
如果(!sdaList.isEmpty()){
sb.append(sdaList.get(0));
对于(int i=1;i
但是,将这个格式化版本的数字放入外部页面的请求参数中的最佳方法是什么

我希望用户在给出数字后点击submit,然后页面转到此报告。仅仅使用javascript是非常容易的,但是“JSF”是如何做到这一点的呢

谢谢,
Zack

这是一种很好的方法,您还可以禁用submit按钮或命令链接,直到输入了所有报告参数,例如

<h:outputLink  id="reportURL" value="#{reportBean.url}" rendered="#{reportBean.enableUrl}">
       <h:outputText value="Go To Report" styleClass="someClass"/>   
</h:outputLink>

但是,在您的逻辑中,您必须确定何时适合呈现url

希望这能对你有所帮助


注意。

这是一种很好的方法,您还可以禁用submit按钮或命令链接,直到输入了所有报告参数,例如

<h:outputLink  id="reportURL" value="#{reportBean.url}" rendered="#{reportBean.enableUrl}">
       <h:outputText value="Go To Report" styleClass="someClass"/>   
</h:outputLink>

但是,在您的逻辑中,您必须确定何时适合呈现url

希望这能对你有所帮助


关于。

我将在的帮助下重定向到外部资源


我将在的帮助下重定向到外部资源


报告的唯一标准是ID列表。他们可以随时查看报告,只是可能没有任何回应。我可以对文本区域进行一次更改,设置值的格式,然后更新链接……这应该是可行的。报告的唯一标准是ID列表。他们可以随时查看报告,只是可能没有任何回应。我可以对文本区域进行一次更改,格式化值,然后更新链接…这应该可以。如果我重定向,它会保留GET查询参数吗?它们刚刚被传递到重定向URL。如果我重定向,它会保留GET查询参数吗?它们刚刚被传递到重定向URL。
public void submit() {
    String url = "http://external.com";
    String query = "name=" + URLEncoder.encode(field.replaceAll("\\s+", ","), "UTF-8");
    FacesContext.getCurrentInstance().getExternalContext().redirect(url + "?" + query);
}