gpt4 book ai didi

java - 下一页的前向变量

转载 作者:行者123 更新时间:2023-12-01 14:23:33 26 4
gpt4 key购买 nike

我有一个用户表。添加、查看和删除工作。但我在编辑时遇到问题。

我的列表页面:

    <h:form id="form">
<p:dataTable styleClass="table" value="#{userMB.allAdmins}" var="admin" paginator="true" rows="15" rowKey="#{admin.id}" selection="#{userMB.user}" selectionMode="single">
<f:facet name="header">
Lista administratorów
</f:facet>

<p:column headerText="#{msg.firstName}">
<h:outputText value="#{admin.firstName}" />
</p:column>

<p:column headerText="#{msg.lastName}">
<h:outputText value="#{admin.lastName}" />
</p:column>

<p:column headerText="#{msg.personalId}">
<h:outputText value="#{admin.personalId}" />
</p:column>

<f:facet name="footer">
<p:commandButton id="viewButton" value="#{msg.info}" icon="ui-icon-search"
update=":form:display" oncomplete="userDialog.show()"/>
<p:commandButton action="#{userMB.createStart()}" value="#{msg.add}" icon="ui-icon-plus" />
<p:commandButton action="#{userMB.editStart()}" value="#{msg.edit}" >
<f:setPropertyActionListener target="#{userMB.user}" value="#{userMB.user}" />
</p:commandButton>
<p:commandButton action="#{userMB.deleteUser()}" value="#{msg.delete}" icon="ui-icon-close"/>
</f:facet>
</p:dataTable>

<p:dialog id="dialog" header="Administrator" widgetVar="userDialog" resizable="false"
width="300" showEffect="clip" hideEffect="explode">

<h:panelGrid id="display" columns="2" cellpadding="4">

<f:facet name="header">
<p:graphicImage value="./../../images/person4.png" width="150" height="150"/>
</f:facet>

<h:outputText value="#{msg.firstName}" />
<h:outputText value="#{userMB.user.firstName}" />

<h:outputText value="#{msg.lastName}" />
<h:outputText value="#{userMB.user.lastName}" />

<h:outputText value="#{msg.personalId}" />
<h:outputText value="#{userMB.user.personalId}" />

</h:panelGrid>
</p:dialog>

</h:form>

我想在下一页上发送所选用户:我使用 aciontListener:

                <p:commandButton action="#{userMB.editStart()}" value="#{msg.edit}" >
<f:setPropertyActionListener target="#{userMB.user}" value="#{userMB.user}" />
</p:commandButton>

我想要向用户发送的编辑页面:

        <h:form>
<div id="userPanel">
<h:inputHidden value="#{userMB.user}" />
<p:panel id="panelUser" header="Edytuj administratora" >
<div id="panelImage">
<img src="./../../images/person4.png" alt="person" width="150px" height="130px"/>
</div>
<h:panelGrid columns="3">
<p:outputLabel for="firstName" value="#{msg.firstName}"></p:outputLabel>
<p:inputText id="firstName" value="#{userMB.user.firstName}" label="#{msg.firstName}" required="true">
<f:validator validatorId="nameValidator" />
<p:ajax update="msgFristName" event="keyup" />
</p:inputText>
<p:message for="firstName" id="msgFristName"/>

<p:outputLabel for="lastName" value="#{msg.lastName}"></p:outputLabel>
<p:inputText id="lastName" value="#{userMB.user.lastName}" label="#{msg.lastName}" required="true">
<f:validator validatorId="nameValidator" />
<p:ajax update="msgLastName" event="keyup" />
</p:inputText>
<p:message for="lastName" id="msgLastName"/>

<p:outputLabel for="personalId" value="#{msg.personalId}"></p:outputLabel>
<p:inputText id="personalId" value="#{userMB.user.personalId}" label="#{msg.personalId}" required="true">
<f:validator validatorId="personalIdValidator" />
<p:ajax update="msgPersonalId" event="keyup" />
</p:inputText>
<p:message for="personalId" id="msgPersonalId"/>

<p:outputLabel for="password" value="#{msg.password}"></p:outputLabel>

</p:panel>
</div>
</h:form>

我添加:<h:inputHidden value="#{userMB.user}" />但我没有看到数据用户,只有空字段。我如何发送此人?我在其他项目中使用过一次这种方法,在没有 primefaces 的情况下略有不同,并且它有效。为什么现在不起作用?

方法editStart:

public String editStart() {
return "editStart";
}

面孔配置:

<navigation-case>
<from-outcome>editStart</from-outcome>
<to-view-id>/protected/admin/adminEdit.xhtml</to-view-id>
<redirect/>
</navigation-case>

当我在 adminEdit 旁边时,我编辑了池并执行 editUser 方法:

public String editUser() {
FacesContext context = FacesContext.getCurrentInstance();
Map requestParameterMap = (Map) context.getExternalContext().getRequestParameterMap();
try {
String userRole = requestParameterMap.get("userRole").toString();
String active = requestParameterMap.get("active").toString();
Boolean act = Boolean.parseBoolean(active);
user.setRole(userRole);
user.setActive(act);
userDao.update(user);
} catch (EJBException e) {
sendErrorMessageToUser("Edit error");
return null;
}
sendInfoMessageToUser("Account edited");
return user.getRole() + "List";
}

我的方法 editStart 仅用于导航。

最佳答案

您可以考虑 Przemek 的答案,也可以使用将参数传递给支持 bean 的 4 种方法之一。1. 方法表达式2.f:参数3.f:属性4. f:setPropertyActionListener

有关详细解释的完整说明,请参阅 this

它有易于理解的示例。看一下并选择适合您需求的内容。

或者简单地说:

在实际的托管 bean 中...

public String navigationButtonListener(User parameter) {
FacesContext.getCurrentInstance().getExternalContext().getRequestMap()
.put("parameterAttribute", parameter);
return "my-destination-page";
}

在目标托管 bean 中...

@PostConstruct
public void init(){
myAttribute= (User) FacesContext.getCurrentInstance()
.getExternalContext().getRequestMap().get("parameterAttribute");

}

祝你好运!

关于java - 下一页的前向变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17344804/

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