我对来自 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 中,防止表单篡改的最佳方法是什么?但我认为我的问题不同!