jsf - لم تتم إضافة سلسلة مضافة إلى أريليست/لم يتم تحديثها



arraylist (1)

... لذلك لقد حصلت على بلديApplicationScoped الفول "تطبيق" ..:

    @ManagedBean(name = "Application")
    @ApplicationScoped
    public class Application implements Serializable {

        private boolean isRunning = false;

        private ArrayList<Feed> sentNotifications = new ArrayList<>();

        private ArrayList<String> emails = new ArrayList<>(
                Arrays.asList("[email protected]", "[email protected]")
        );

        private LinkedList<String> words = new LinkedList<>(
                Arrays.asList("vuln","banana","pizza","bonanza")
        );

        private LinkedList<String> feeds = new LinkedList<>(
                Arrays.asList("http://www.kb.cert.org/vulfeed",
                "https://ics-cert.us-cert.gov/advisories/advisories.xml",
                "https://ics-cert.us-cert.gov/alerts/alerts.xml")
        );

... وتريد إضافة سلسلة إلى ArrayList<String> emails باستخدام الطريقة:

public String addEmail(String email) {
        emails.add(email);
        return null;
}

و فاسيليت يذهب على النحو التالي:

 <!-- EMAILS -->
    <h3>Configured Emails</h3>
    <h:form>
        <h:inputText value="Email" var="email"/>
        <h:commandButton value="Add Email" action="#{Application.addEmail(email)}"/>
    </h:form>
    <h:form>
        <ui:repeat var="email" value="#{Application.emails}">
            <tr>
                <td>#{email}</td>

                <td>
                    <f:facet name="header">Action</f:facet>
                    <h:commandLink value="Delete" action="#{Application.rmEmail(email)}"/>
                </td>
            </tr>
            <br></br>
        </ui:repeat>
    </h:form>

... لذلك عندما أحاول إضافة "[email protected]"، وهذا هو النتيجة:

  • هناك حذف زر أظهرت، ولكن ليس سلسلة نفسها؟!
  • هو سلسلة أضاف بشكل صحيح - و جسف لا يعيد وجهة نظر ..؟
  • ..Or هو سلسلة لم تضاف بشكل صحيح؟

الرجاء المساعدة! شكر.


أنا ثابتة، وأخيرا!

بفضل المستخدمKukeltje، الذي ألمح لي في الأشياء الأساسية التي حصلت على خطأ - والمستخدمWietlol الذين دافعتني في الدردشة من خلال الدعم المعنوي و "يؤمن لي :)

الحل:

..في Application.java:

public List<Feed> sentNotifications = new ArrayList<>();

public List<String> emails = new ArrayList<>();

public List<String> words = new LinkedList<>(Arrays.asList("vuln", "banana", "pizza", "bonanza"));

public List<String> feeds = new LinkedList<>(
        Arrays.asList("http://www.kb.cert.org/vulfeed",
                "https://ics-cert.us-cert.gov/advisories/advisories.xml",
                "https://ics-cert.us-cert.gov/alerts/alerts.xml")
);

private String currentEmail;
private String currentFeed;
private String currentWord;

[...]

 public void addEmail() {
        emails.add(currentEmail);
 }

.. و gui.xhmtl:

 <!-- EMAILS -->
    <h3>Configured Emails</h3>
    <h:form>
        <h:inputText value="#{Application.currentEmail}" var="email"/>
        <h:commandButton value="Add Email" action="#{Application.addEmail}"/>
    </h:form>
    <h:form>
        <ui:repeat var="email" value="#{Application.emails}">
            <tr>
                <td>#{email}</td>

                <td>
                    <f:facet name="header">Action</f:facet>
                    <h:commandLink value="Delete" action="#{Application.rmEmail(email)}"/>
                </td>
            </tr>
            <br></br>
        </ui:repeat>
    </h:form>

لاحظ كيف action="#{Application.addEmail}" لا يستفيد من الوسيطات - بل يتم تسليم المعلمة إلى الطريقة عبر value="#{Application.currentEmail}" .

إذا كنت، القارئ، لديهم نفس المشكلة يرجى النظر في هذه النقاط:

  • جيتر / سيتر لكل حقل في الفول
  • حقول بدائية!
  • طرق أقل حجة إلى "تفويض" الحقول البدائية، على سبيل المثال بلدي طريقة أدمايل

نأمل أن تكون هذه الإجابة مفيدة ل بل وجود نفس المشكلة!

تحياتي، جيور





arraylist