0

我对来自 strust2 的 jsf 非常陌生,只用了两天!

由于 struts 会自动将请求参数绑定到操作,因此当您使用ModelDriven方法时,有一种机制可以帮助您特别控制这一点。在那里你可以实现acceptableParameterName方法来控制struts 应该自动设置什么,不应该自动设置什么。

无论如何,现在我们在 JSF 中,我想知道这里应该做什么!

我尝试下面的简单页面

<h:form>
          <h:inputText id="name" value="#{helloBean.name1}"></h:inputText>
            <h:commandButton value="Welcome Me">
               <f:ajax execute="name" render="output" />
            </h:commandButton>

           <h2><h:outputText id="output" value="#{helloBean.name2}" /></h2>
        </h:form>

豆是:

@ManagedBean
@SessionScoped
public class HelloBean2 implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name1;
    private String name2;

    public String getName1() {
        return name1;
    }

    public void setName1(String name1) {
        this.name1 = name1;
    }

    public String getName2() {
        return name2;
    }

    public void setName2(String name2) {
        this.name2 = name2;
    }
}

我尝试篡改生成的 html,它是:

<input id="j_idt41:name" name="j_idt41:name" value="" type="text">

<input id="j_idt41:name" name="j_idt41:name2" value="" type="text">

但是没有运气,JSF 没有设置 name2

我的问题是:

这是否意味着 JSF 知道我尝试从用户那里获取哪些参数并自动阻止其他参数?例如,如果我有名称为name1的inputText ,JSF 将设置name1?!

如果不是,我应该如何避免 JSF 自动绑定不需要的参数?

请考虑我真正的问题是我想使用带有很多参数的 bean,并且每个视图中只应设置其中一些参数(某种向导)

我看到在 JSF 中,防止表单篡改的最佳方法是什么?但我认为我的问题不同!

4

0 回答 0