我在xhtml中获得了以下代码:
<h:inputText binding="#{year}" />
<h:inputText binding="#{month}" />
<pretty:link value="Create" mappingId="pretty:addEntity">
<f:param name="year" value="#{year.value}" />
<f:param name="month" value="#{month.value}" />
Create Entity
</pretty:link>
此外,我还使用init
方法设置了@URLAction(onPostback = false)
方法。
我想在这个方法中读取传递的参数。 params不在JSF的请求参数映射中,也不在查询字符串的一部分(com.ocpsoft.pretty.PrettyContext.getCurrentInstance().getRequestQueryString()
)
如何将这些参数传递给init方法而不将它们绑定到辅助bean?
import com.ocpsoft.pretty.faces.annotation.URLAction;
import com.ocpsoft.pretty.faces.annotation.URLMapping;
import de.financeme.view.menu.NaviCase;
import javax.annotation.ManagedBean;
import javax.faces.bean.ViewScoped;
import lombok.Getter;
import lombok.Setter;
@ManagedBean
@ViewScoped
@URLMapping(id = "addEntity", pattern = "/entity/add", viewId = "/entity/add.xhtml")
public class Bean {
@Getter
@Setter
private String month;
@Getter
@Setter
private int year;
@URLAction(onPostback = false)
public void init() {
// month = null
// year = 0
}
}
即使将它们绑定到辅助bean也是如此。我没有调用任何提交功能。因此,它们不会存储到各自的字段中。
有什么问题?我在这里缺少什么?
答案 0 :(得分:0)
您必须将参数绑定到模式中的bean。像这样:
<pretty:link value="Create" mappingId="pretty:addEntity">
<f:param name="year" value="2017" />
<f:param name="month" value="12" />
Create Entity
</pretty:link>
豆子:
@ManagedBean
@ViewScoped
@URLMapping(id = "addEntity",
pattern = "/entity/#{bean.year}/#{bean.month}/add",
viewId = "/entity/add.xhtml")
public class Bean {
// ...
}
现在你会得到这样的链接:
/entity/2017/12/add