gpt4 book ai didi

java - 提交后如何访问表单数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:50 25 4
gpt4 key购买 nike

我有一个我无法解决的问题。

好吧,假设我们正在从网页(可能是 jsp、xhtml、portlet ...)中调用一个方法(在支持 bean 中)并按下一个按钮。

<h:form>
....
<h:inputText value="#{errorManager.errorTestDataBean.errore00}" />

<h:commandButton id="go" value="GO" action="#{errorManager.triggerError}" />
...
</h:form>

提交的表单及其值。

我们再假设在action过程中会遇到一个问题(Exception)。

我编写(并注册)了一个 ActionListener,它将捕获未处理的异常(并且会做一些事情来处理它):

public class ExceptionHandlingActionListener extends ActionListenerImpl
{

public void processAction(ActionEvent event)
{
try
{
super.processAction(event); //+THE ERROR HAPPENS IN THE SUPER CLASS+
}
catch(Exception exception)
{
exception.printStackTrace();
......... do something here ...............

FacesContext facesContext = FacesContext.getCurrentInstance();
Application application = facesContext.getApplication();
NavigationHandler navigationHandler = application.getNavigationHandler();
navigationHandler.handleNavigation(facesContext, null, "error"); /* FORWARD TO AN ERROR PAGE */
facesContext.renderResponse();
}
}
}

效果很好......但是......我需要知道提交表单中的数据(过去是?)。

我怎样才能得到这些信息?我想要一个通用方法,因为错误可能发生在应用程序的任何地方(我真的不知道 clientId 或其他关于对象的特殊信息)。

获取所有发布的数据并记录在数据库中也可以:稍后我将分析数据!!

不幸的是,我们仍然使用 JSF 1.2。

有什么想法吗?

非常感谢!托马索

最佳答案

所以,你想获取所有的请求参数?

在一个 bean 中你可以做如下的事情:

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
Map<String, String[]> paramValues = ec.getRequestParameterValuesMap();

在 View (假设是 JSP)中,您可以执行以下操作:

<ul>
<c:forEach items="${paramValues}" var="entry">
<li>${entry.key}:
<c:forEach items="${entry.value}" var="value" varStatus="loop">
${value}${!loop.last ? ', ' : ''}
</c:forEach>
</li>
</c:forEach>
</ul>

${paramValues}暗指 HttpServletRequest#getParameterMap() 返回 Map<String, String[]> .

关于java - 提交后如何访问表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com